Je commence tout juste à regarder Zend Framework 2 (et je suis nouveau sur ZF en général), et dans le user guide, ils utilisent l'auto-chargement lors de l'ajout d'un nouveau module. Cependant, je trouve l'explication assez difficile pour une recrue. Ils ajoutent un fichier Module.php
dans le répertoire du module, qui contient entre autres le code suivant:Zend Framework 2 chargement automatique
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
Maintenant, je fait quelques recherches autour d'essayer de comprendre ce que ce autoloading est tout au sujet. Pour autant que je sache, l'autoloading utilise spl_autoload_register()
et est un moyen d'éviter d'avoir require_once()
partout dans le code. Ainsi, en essayant d'utiliser une classe qui n'est pas définie, la méthode autoload()
qui a été enregistrée sera exécutée, ce qui fait simplement une recherche de tableau et inclut le fichier comme ci-dessous s'il a été ajouté.
// Zend/Loader/ClassMapAutoloader.php
public function autoload($class)
{
if (isset($this->map[$class])) {
require_once $this->map[$class];
}
}
Cela semble intelligent en raison de la performance. J'espère que ce que je viens d'écrire est correct. Basé sur ceci, j'essaye de comprendre ce qui se passe dans getAutoloaderConfig()
du premier extrait de code, mais je suis assez confus. Il semble que le tableau qui est retourné par cette méthode est utilisé pour AutoloaderFactory::factory()
, mais je ne suis pas sûr dans quel but. Instantiating autochargeurs avec des options, il semble, mais exactement ce que cela fait, je ne suis pas sûr. Je suppose que la deuxième entrée du tableau spécifie où trouver les fichiers source pour l'espace de noms du module - au moins, ce serait ma conjecture. La première entrée que je suis, cependant, pas sûr de. Dans le guide de l'utilisateur, il est dit ce qui suit:
Comme nous sommes dans le développement, on n'a pas besoin de charger les fi via le classmap, donc nous fournir un tableau vide pour le chargeur automatique classmap.
Le fichier renvoie simplement un tableau vide. Je ne suis pas sûr de l'objectif de ce ClassMapAutoloader. Désolé, si mon point n'est pas clair; Fondamentalement, j'essaie de comprendre ce qui se passe dans getAutoloaderConfig()
et à quoi sert mymodule/autoload_classmap.php
. Si quelqu'un pouvait faire la lumière sur ce sujet, ce serait très apprécié!
Zend est tellement sur son ingénierie ridicule. – wesside
Absolument. Mais je pense que si vous trouvez votre chemin, c'est vraiment très puissant. Comme Magento. –
Je l'utilise au travail, il a ses hauts et ses bas. Je préfère Kohana, et j'utilise les bibliothèques Zend dont j'ai besoin. Désolé @ andy124, n'en ai pas encore utilisé 2, désolé de pirater votre question. – wesside