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.