Lors de la création d'une bibliothèque, je fournis toujours une classe Autoloader
qui gère le chargement automatique de la bibliothèque. Le chargeur automatique est inscrit comme ceci:Comment gérer le chargement automatique des dépendances
require_once 'path/to/PHP-Parser/lib/PHPParser/Autoloader.php';
PHPParser_Autoloader::register();
Je ne sais pas si la façon de traiter si ma bibliothèque dépend d'une autre bibliothèque. Imaginez que PHPParser
dépend d'un PHPLexer
. Maintenant, lorsque vous utilisez la bibliothèque on aurait besoin d'écrire:
require_once 'path/to/PHP-Lexer/lib/PHPLexer/Autoloader.php';
PHPLexer_Autoloader::register();
require_once 'path/to/PHP-Parser/lib/PHPParser/Autoloader.php';
PHPParser_Autoloader::register();
S'il y a plus d'une dépendance ou les dépendances ont des dépendances eux-mêmes, cela peut se salir rapidement.
Alors Comment devrait-on gérer l'auto-chargement des dépendances? Une idée que j'avais était que la bibliothèque devrait gérer le chargement automatique pour ses dépendances aussi, mais cela ne me semble pas juste. Une autre idée serait de ne pas fournir un autochargeur du tout et de supposer que les gens utilisent le UniversalClassLoader
. Cela ne semble pas correct non plus.
'Une idée que j'avais était que la bibliothèque devrait aussi gérer le chargement automatique pour ses dépendances, mais cela ne va pas.'- quand tous les fournisseurs supportent PSR-0, cette idée fonctionne bien –