Lib Loader - Inclure vos classes et fichiers en toute facilité
Posté : 21 mars 2015, 15:46
Bonjour à tous.
Voici une librairie créée par mes soins qui vous facilitera la vie dans vos projets.
Quel est son utilité :
Elle inclue vos classes lors de leur instanciation en fonction des configurations définies dans le fichier "library/autoload.php" ou ultérieurement dans votre code et rend la manipulation des dossiers d'inclusions plus simpliste.
L'exploitation de pattern tel que le concept MVC facilite la production de vos sites web, pour ce faire vous devrez créer de nombreuses classes CORE (fonctionnalité) et METIER (dépendance).
En choisissant une certain structure des espaces de nom des classes en fonction de leurs répertoires, vous pouvez facilement simplifier le code.
Admettons que mon Framework MVC charge des classes CONTROLLER dans différents endroit.
path/to/app/front/controllers et path/to/app/back/controllers ...
La solution est très simple :
Structure des classes :
# path/to/app/front/controllers/MaClassController.php
Tous vos classes CONTROLLER des deux répertoires ajoutés sont prêtes à être instanciés sans les inclure au préalable. Mais également tous les classes situées dans les sous répertoires, tant qu'elles respectent une structure reconnue et référencé en tant qu'interface AutoloadInterface.
Structures reconnues :
PSR-0 : http://www.php-fig.org/psr/psr-0/fr/
PSR-4 : http://www.php-fig.org/psr/psr-4/fr/
La classe NamespaceName est équivalant au PSR-4
Interface d'auto inclusion (AutoloadInterface) :
Composer
ClassMap
NamespaceName
PsrZero
PsrFour
Le lien Github :
https://github.com/orenx22/Loader
Le lien Github exemple :
https://github.com/orenx22/Loader/tree/ ... est/Loader
Le lien de téléchargement Github :
https://github.com/orenx22/Loader/archive/master.zip
Si le post vous plait, n’hésitez pas à donner vos commentaires. En fonction du nombre d'intéressés, je ferai une suite pour une exploitation CMS (BlogPost) avec le moteur de template Twig, une base de données MongoDB et quelques packages made in composer.
Bon suite.
Voici une librairie créée par mes soins qui vous facilitera la vie dans vos projets.
Quel est son utilité :
Elle inclue vos classes lors de leur instanciation en fonction des configurations définies dans le fichier "library/autoload.php" ou ultérieurement dans votre code et rend la manipulation des dossiers d'inclusions plus simpliste.
L'exploitation de pattern tel que le concept MVC facilite la production de vos sites web, pour ce faire vous devrez créer de nombreuses classes CORE (fonctionnalité) et METIER (dépendance).
En choisissant une certain structure des espaces de nom des classes en fonction de leurs répertoires, vous pouvez facilement simplifier le code.
Admettons que mon Framework MVC charge des classes CONTROLLER dans différents endroit.
path/to/app/front/controllers et path/to/app/back/controllers ...
La solution est très simple :
Code : Tout sélectionner
use \Component\Loader\Autoload;
use \Component\Loader\Autoload\NamespaceName;
$ClassLoader = \Component\Loader\Autoload::ClassLoader();
$ClassLoader->AutoloadFactory()
->set(new NamespaceName('Controller\Front', path/to/app/front/controllers)
->set(new NamespaceName('Controller\Back', path/to/app/back/controllers);
# path/to/app/front/controllers/MaClassController.php
Code : Tout sélectionner
namespace \Controller\Front;
class MaClassController {
// do something
}
Structures reconnues :
PSR-0 : http://www.php-fig.org/psr/psr-0/fr/
PSR-4 : http://www.php-fig.org/psr/psr-4/fr/
La classe NamespaceName est équivalant au PSR-4
Interface d'auto inclusion (AutoloadInterface) :
Composer
ClassMap
NamespaceName
PsrZero
PsrFour
Le lien Github :
https://github.com/orenx22/Loader
Le lien Github exemple :
https://github.com/orenx22/Loader/tree/ ... est/Loader
Le lien de téléchargement Github :
https://github.com/orenx22/Loader/archive/master.zip
Si le post vous plait, n’hésitez pas à donner vos commentaires. En fonction du nombre d'intéressés, je ferai une suite pour une exploitation CMS (BlogPost) avec le moteur de template Twig, une base de données MongoDB et quelques packages made in composer.
Bon suite.