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

Zend Framework PHP Discussion :

Problème avec l'autoload [ZF 1.9]


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Par défaut Problème avec l'autoload
    Bonjour à tous,

    J'ai un petit problème avec l'autoload. En gros... ça autoload pas

    Voila comment j'ai procédé :

    Dans mon bootstrap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // mise en place des répertoires et chargement des classes
    set_include_path('.'
      . PATH_SEPARATOR . '../library'
      . PATH_SEPARATOR . '../application/models/'
      . PATH_SEPARATOR . '../application/'
      . PATH_SEPARATOR . get_include_path());
     
    //La classe Zend_Loader_Autoloader inclut des méthodes 
    //afin de nous aider à charger des fichiers dynamiquement.
    require_once 'Zend/Loader/Autoloader.php';
    $loader = Zend_Loader_Autoloader::getInstance();
    $loader->registerNamespace('DbTable_');
    Du coup, d'après la présentation du Zend framework par julien pauli, je devrai pouvoir charger mes classes de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $maclass = new DbTable_Maclass;
    à condition que Maclass.php soit présent dans un dossier qui soit présent dans le PATH/DBtable/Maclass.php

    J'ai un fichier Programmes.php qui contient la classe Programmes qui se trouve dans application/models/DbTable/ donc dans un endroit ou théoriquement l'autoloader peut aller le chercher.

    Dans mon controller j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class InvestirController extends Zend_Controller_Action {
     
      function projetAction() {
        // On fait appel au modèle pour selectionner nos programmes
        $p = new DbTable_Programmes;
        $row = $p->allProgs();
        $this->view->prog = $row;
        //Suite de la fonction
        }
     
        //Suite du controller
    }
    Théoriquement ça devrait marcher non ? Ou alors j'ai raté une étape ?
    Parce que tout ce que j'obtiens c'est :
    Fatal error: Class 'DbTable_Programmes' not found in C:\Program Files\wamp\www\terresens\application\controllers\InvestirController.php on line 9
    -->La ligne 9 c'est la ou j'écrit $p = new DbTable_Programmes;
    Je précise que si je charge mes classes avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once '../application/models/DbTable/Programmes.php';
    ça fonctionne. Donc c'est bel et bien au niveau de l'autoload qu'il y a un problème.

    J'ai lu l'atelier sur les autoloader de Julien Pauli, mais ça ne m'a pas aidé à résoudre mon problème...

    Si vous avez des pistes ? Des idées ? La solution ?

    Merci par avance

  2. #2
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Dans DbTable/Programmes.php, ta classe doit s'appeler DbTable_Programmes.
    Est-ce bien le cas ?

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Par défaut
    ta classe doit s'appeler DbTable_Programmes.
    Euh... non. Elle s'appelle Programmes ... Du coup je viens de changer et effectivement ça marche !
    Un grand merci (mais j'me sens un peu con la )

    Par contre ça veut dire que si je rajoute DbTable dans mon PATH et que je vire le namespace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // mise en place des répertoires et chargement des classes
    set_include_path('.'
      . PATH_SEPARATOR . '../library'
      . PATH_SEPARATOR . '../application/models/'
      . PATH_SEPARATOR . '../application/models/DbTable/'
      . PATH_SEPARATOR . '../application/'
      . PATH_SEPARATOR . get_include_path());
     
    //La classe Zend_Loader_Autoloader inclut des méthodes 
    //afin de nous aider à charger des fichiers dynamiquement.
    require_once 'Zend/Loader/Autoloader.php';
    $loader = Zend_Loader_Autoloader::getInstance();
    //$loader->registerNamespace('DbTable_');
    Je peux appeler mes classes dans mon controller de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $maclass = new Maclass;
    et laisser ma classe Programmes dans Programmes.php tel quelle ?

    Je test et je reviens confirmer ou infirmer, dès fois que ça intéresse quelqu'un.

    Encore merci en tout cas

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Par défaut
    Je test et je reviens confirmer ou infirmer, dès fois que ça intéresse quelqu'un.
    J'infirme donc, ça ne fonctionne pas. Dommage

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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