IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres composants PHP Discussion :

PHPExcel et Autoloader


Sujet :

Autres composants PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut PHPExcel et Autoloader
    Bonjour,

    Mon post est quelque peu ciblé : j'essaie d'attirer Maitre Pylos...

    Je suis un nouvel utilisateur de l'excellente librairie PHPExcel et je voudrais l'intégrer à la librairie générale de mon serveur afin de la rendre disponible pour tous les projets.
    Ces projets utilisent par ailleurs le non moins excellent Zend Framework en architecture MVC et utilisant l'autoloader.
    Le problème vient de la convention de nommage de PHPExcel qui ne colle pas trop avec celle de l'autoloader classique.

    Quelqu'un a-t-il trouvé une solution pour coupler PHPExcel et Autoloader ?

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par s.n.a.f.u Voir le message
    Le problème vient de la convention de nommage de PHPExcel qui ne colle pas trop avec celle de l'autoloader classique.
    elle a quoi de particulier ?

    je n'ai jamais utilisé PHPExcel mais d'après ce que je viens de voir rapidement, les classes qui sont dans le répertoire PHPExcel respectent la convention Zend donc il suffit de mettre le répertoire parent dans l'"include_path" et ensuite tu rajoutes le prefixe "PHPExcel_" à l'autoloader

    et si c'est plus compliqué tu peux créer une classe qui hérite Zend_Loader
    http://framework.zend.com/manual/fr/....load.autoload

  3. #3
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    elle a quoi de particulier ?

    je n'ai jamais utilisé PHPExcel mais d'après ce que je viens de voir rapidement, les classes qui sont dans le répertoire PHPExcel respectent la convention Zend donc il suffit de mettre le répertoire parent dans l'"include_path" et ensuite tu rajoutes le prefixe "PHPExcel_" à l'autoloader

    et si c'est plus compliqué tu peux créer une classe qui hérite Zend_Loader
    http://framework.zend.com/manual/fr/....load.autoload
    Oui il me semble que c'est plus compliqué.

    Je vais essayer de prendre un exemple :

    - dossiers constituants ma library : Zend, Tcpdf, PhpXl (nom donné au pif pour ne pas faire doublon)

    - dans le dossier PHPExcel, j'ai le fichier de la classe de base PHPExcel.php qui contient la classe PHPExcel alors que celle-ci aurait dû être nommé PhpXl_PHPExcel.

    - Ainsi de suite : dans le sous-dossier PHPExcel, j'ai un fichier Cell.php décrivant PHPExcel_Cell alors que j'aurais souhaité PhpXl_PHPExcel_Cell

    Voilà mon problème...
    Il doit y avoir un moyen de bidouiller l'autoloader pour cet espace de nom, mais pour l'instant, je suis dans les choux.

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    A priori, j'ai peut-être réussi en utilisant l'autoload de ressources :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            $r = new Zend_Loader_Autoloader_Resource(array(
                'basePath'  => 'phpXl',
                'namespace' => '',
            ));
            $r ->addResourceType('phpExcel', 'PHPExcel/', 'PHPExcel');
    'phpXl' est le dossier contenant toute l'architecture de PHPExcel

    Ce dossier est un élément de mon répertoire 'library' qui lui-même est dans l'include_path.

    Pour l'instant, RESOLU !

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Et non, pas résolu !

    Je peux instancier toutes les classes, sauf celle de base.
    Je m'en doutais un peu : comment la trouver alors qu'elle n'a pas le bon préfixe ?

  6. #6
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par s.n.a.f.u Voir le message
    Et non, pas résolu !

    Je peux instancier toutes les classes, sauf celle de base.
    Je m'en doutais un peu : comment la trouver alors qu'elle n'a pas le bon préfixe ?
    à la barbare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once APPLICATION_PATH . '/../library/phpXl/PHPExcel.php';

Discussions similaires

  1. Optimiser un code procédural avec autoload
    Par max-mag dans le forum Langage
    Réponses: 8
    Dernier message: 25/09/2008, 15h01
  2. autoload et sessions
    Par nguema dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2008, 16h16
  3. [Excel] Formattage des nombres avec PHPExcel !
    Par gentyjp dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/10/2007, 02h00
  4. [POO] Probleme avec static et autoload
    Par laetyboop dans le forum Langage
    Réponses: 1
    Dernier message: 23/03/2006, 14h46
  5. exemple de script avec autoloader
    Par djibril dans le forum Modules
    Réponses: 4
    Dernier message: 24/11/2005, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo