9
votes

Bibliothèque personnalisée automatique à Zend Framework 2.0

J'ai besoin d'utiliser AutoLoading pour mes classes personnalisées dans Zend Framework 2.0 . Ma bibliothèque personnalisée située dans / Vendeur / Garvey / Bibliothèque / Garvey . J'ai une simple classe abstraitable étendue dans /vendor/graved/library/garey/db/table/abstracttable.php : xxx

dans l'index.php j'ai Le code suivant: xxx

mais j'ai l'erreur suivante. Ce que j'ai manqué? xxx

merci d'avance.


3 commentaires

quoi? C'est faux regard sur le manuel


C'est un cadre Zend 2. Beta1.


Pourquoi utilisez-vous une version plus ancienne ... (2min)


5 Réponses :


2
votes

J'ai trouvé la réponse. Mettez ceci dans votre index.php: xxx


3 commentaires

mmm un peu frustrant. Vous pouvez être nouveau mais je suis encore plus récent! Où est-ce que ce qui précède va? Je pense publique / index.php


En fait, la bonne façon serait d'avoir un module pour cela (ajoutant uniquement un autochargeur à l'application).


Vous n'êtes pas correcte. Module - fait partie de l'application. Le vendeur - est un élément pour différentes applications.



12
votes

Votre index original.php aurait également fonctionné si vous avez modifié la touche "Préfixes" sur "Espaces de noms" et spécifier le chemin comme ci-dessous:

Zend\Loader\AutoloaderFactory::factory(array('Zend\Loader\StandardAutoloader' => array(
    'namespaces' => array(
        'Garvey' => dirname(__DIR__) . '/vendor/Garvey',
    )
)));


2 commentaires

Belle réponse, juste une petite correction pour cette question spécifique: 'Garvey' => Dirname (__ dir__). '/ Vendeur / Garvey / Bibliothèque / Garvey'


Plutov, vous ne devriez pas avoir besoin de: require_once 'Vendor / Zendframework / Bibliothèque / Zend / Loader / AutoLoaderFactory. PHP';



11
votes

ou vous pouvez défendre la méthode dans module.php xxx pré>

mais je ne le recommanderais pas. Depuis ZF2, tout a centrifié sur la vitesse de l'autoloading Le meilleur moyen est d'utiliser le style de classe_map pour charger vos classes. Cela fonctionnera beaucoup plus rapidement à la fin mais nécessite des travaux supplémentaires. Vous pouvez enregistrer chaque classe dans votre fichier class_map. P>

Vous pouvez créer class_map.php à la racine de votre bibliothèque et placer là-bas p> xxx pré>

et ajouter Il y a de nombreuses classes que vous utilisez. Et dans getautoloaderconfig (), vous pouvez vous ajouter ClassMap P>

public function getAutoloaderConfig()
{
    $return = array(
        'Zend\Loader\ClassMapAutoloader' => array(
            __DIR__ . '/autoload_classmap.php',
            __DIR__ . '/../../vendor/Garvey/library/Garvey/class_map.php',
        ), 
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
            )
        )
    );
}


1 commentaires

À mon avis, c'est la meilleure réponse. L'utilisation d'une carte de classe est la voie rapide (sinon la plus rapide) de charger des classes et celle-ci recommandée par Zend. Il est également claire et facile traçable. Bon travail de dégagement de cette méthode, merci!




2
votes

Regardez rapidement Ce message .

Now Suivant Step consiste à ajouter du code dans notre bibliothèque personnalisée. p>

Tout d'abord ouvrir un fichier ./ Vendeur / Garvey / AutoLoad_Classmap.php code> p> xxx pré>

suivant est ./ Vendeur / garvey / module.php code> p>

return array(
    'modules' => array(
        'Application',
        'Garvey'
    ),

    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php',
        ),

        'module_paths' => array(
            './module',
            './vendor',
        ),
    ),
);


1 commentaires

Post link retourne 404