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

MVC PHP Discussion :

Problème inclusion de classe et set_include_path()


Sujet :

MVC PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème inclusion de classe et set_include_path()
    Salut à tous,

    Je débute avec Zend et j'ai un problème avec l'inclusion de mes models.

    J'ai une architecture du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    +application
       +configs
       +controllers
       +models
       +views
    Avec un fichier Prize.php situé dans application/models que je souhaite inclure depuis un contrôleur.

    J'ai donc fait un Zend_Loader::loadClass('Application_Model_Prize', 'applications/models');, mais j'ai une erreur : Error: File "Prize.php" does not exist or class "Application_Model_Prize" was not found in the file

    J'ai pas mal farfouillé sur le net et j'en ai déduit que cela venait probablement de mon include_path qui ne contenait pas de lien vers mon répertoire models, j'ai donc essayé de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $newIncludePath = array();
    $newIncludePath[] = '.';
    $newIncludePath[] = '/../library';
    $newIncludePath[] = get_include_path();
    $newIncludePath[] = '/models';
    $newIncludePath = implode(PATH_SEPARATOR, $newIncludePath);
    set_include_path($newIncludePath);
    dans mon index.php mais j'ai une erreur Class 'Zend_Application_Bootstrap_Bootstrap' not found.


    Est-ce que mon problème vient vraiment de l'include_path, et pourquoi dès que j'essaye de le modifier il trouve plus ma classe Bootstrap (ou une autre classe Zend d'ailleurs, l'erreur est assez aléatoire) ?

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Salut,
    Je pense que personne ne te répond car il y a un petit souci de vocabulaire.
    Visiblement ton contrôleur ne va pas chercher ton fichier Modele Prize.

    Avant de te lancer dans la création de ta propre application, je te conseil ce tutoriel.
    Il est rapide à réaliser et te donne de bonne base pour débuter.

    http://s-jdm.developpez.com/tutoriel...ramework-1-10/


    Darkroll

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Comment s'appelle ta classe se trouvant dans Prize.php

  4. #4
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2008
    Messages : 71
    Points : 117
    Points
    117
    Par défaut
    Salut,

    Si tu utilises une version récente du framework (supérieure à 1.8 ou 1.9 je crois), tu n'as pas besoin de définir ton include_path toi-même.

    Cependant, comme le suggère MaitrePylos, il faut respecter la convention de nommage des classes du Zend Framework pour que l'autoload fonctionne :

    si ta classe est située dans le fichier Application/Models/Prize.php, alors ta classe doit s'appeler Application_Model_Prize

    La convention suit généralement la règle suivante :

    - Si la classe est dans le fichier Dossier1/Dossier2/Fichier.php, alors elle doit se nommer Dossier1_Dossier2_Fichier

    certaines exceptions sont toutefois mises en oeuvre par défaut dans les applications Mvc du zf :
    - les classes situées dans le dossier Module/Models doivent s'appeler Module_Model_<nomdumodele> (Model est au singulier dans le nom de la classe)
    - les classes situées dans le dossier Module/Forms doivent s'appeler Module_Form_<nomduformulaire> (toujours au singulier)

    Il existe d'autres exceptions, mais je ne les ai pas toutes en tête...

    Note : j'ai utilisé ici le nom des modules, quand on ne les utilise pas, le nom du module par défaut est Application.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/10/2012, 21h19
  2. Inclusion de classes / problème de déclaration
    Par scal-80 dans le forum C++
    Réponses: 5
    Dernier message: 21/06/2006, 16h28
  3. Problème inclusion dans un .lib
    Par Didj7 dans le forum C++
    Réponses: 6
    Dernier message: 22/01/2006, 16h00
  4. Réponses: 9
    Dernier message: 25/09/2005, 16h33
  5. Réponses: 4
    Dernier message: 13/07/2005, 14h56

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