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 :

Syteme de modules et chargement de classe


Sujet :

Zend Framework PHP

  1. #1
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut Syteme de modules et chargement de classe
    Bonjours,Je viens de mettre en place un syteme modulaire qui fonctionne bien.

    Sauf que pour la peine, quand je veux cherher une classe sa marche pas avec le message d'erreur qui va avec.

    Voici mon Bootstrap principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    		{
    		    public function run()
    		    {
    				// Cela permet d'avoir la configuration disponible de partout dans notre application
    		        Zend_Registry::set('config', new Zend_Config($this->getOptions()));
    		        parent::run();
    		    }
     
    		    protected function _initDefaultNamespace()
        {
            $this->bootstrap('frontcontroller');
            $fc = $this->getResource('frontcontroller');
            $defaultModule = $fc->getControllerDirectory($fc->getDefaultModule());
     
    		new Zend_Application_Module_Autoloader(array(
                    'namespace' => '', // pas de namespace
                    'basePath'  => APPLICATION_PATH . $defaultModule,
                ));
        }
     
     
        protected function _initView()
        {
            // Initialize view
            $view = new Zend_View();
            $view->doctype('XHTML1_STRICT');
            $view->headTitle('Ma premiere application avec Zend');
            $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=ISO-8859-1');
            // Add it to the ViewRenderer
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
            $viewRenderer->setView($view);
            // Return it, so that it can be stored by the bootstrap
            return $view;	
        }
     
    }
    Donc dans modules/default/controllers/IndexController.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
    class IndexController extends Zend_Controller_Action
    {
        public function init()
        {
           $this->view->headTitle('Mon application avec Zend_Application (Utilisateur par défaut)');
        }
     
        public function indexAction()
        {
            $this->_response->appendBody('Bievenue');
        }
     
    	public function testAction()
    	 {
    	 $tuto1 = new Model_Tuto1();
    	 $this->view->tabTuto1 = $tuto1->find();
    	 }
    }
    Et le model Tuto1.php dans modules/default/model/Tuto1.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <?php
    class Model_Tuto1 {
    	 private $dbTable;
    	 private $id;
    	 private $fr;
    	 private $en;
     
    	public function __construct( $id = false ) {
    		$this->dbTable = new Model_DbTable_Tuto1();
    		if($id) {
    	    	$tmp = $this->dbTable->getTuto1($id);
    	        $this->id = $tmp['id_tuto1'];
    	        $this->fr = $tmp['fr'];
    	        $this->en = $tmp['en'];
    	     }
    	 }
     
    	 /*
    	 * GET & SET
    	 */
    	 public function getDbTable() {
    	     return $this->dbTable;
    	 }
    	 public function getId() {
    	     return $this->id;
    	 }
    	 public function getFr() {
    	     return $this->fr;
    	 }
    	 public function getEn() {
    	     return $this->en;
    	 }
     
    	 public function setId($id) {
    	     $this->id = id;
    	 }
    	 public function setFr($fr) {
    	     $this->fr = $fr;
    	 }
    	 public function setEn($en) {
    	     $this->en = $en;
    	 }
     
    	 public function add() {
    	     return $this->dbTable->ajouter(array('fr' => $this->fr, 'en' => $this->en));
    	 }
     
    	 public function update() {
    	     $this->dbTable->maj(array('id' => $this->id, 'fr' => $this->fr, 'en' => $this->en));
    	 }
     
    	 public function delete() {
    	     $this->dbTable->supprimer($this->id);
    	 }
     
    	 public function find($tab = false) {
    	     $results = $this->dbTable->find($tab);
     
    	     foreach($results as $r)
    	     {
    	         $ret[] = new Model_Tuto1($r['id_tuto1']);
    	     }
     
    	     return $ret;
    	 }
    }
    Donc on voit bien je veux instancier ma classe.
    Mais lorque ce je vais sur le site sa dit classe introuvable.

    Est un probleme de "autoloader" ?

    Comment regler mon probleme ?


    merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    et le message ?

  3. #3
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Fatal error: Class 'Model_Tuto1' not found in C:\wamp\www\tuto\application\modules\default\controllers\IndexController.php on line 16

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    t'as quelle version du ZF ?

  5. #5
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    1.11.8

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pourquoi tu règles ça dans ton Bootsrap utilise le fichier ini du projet

  7. #7
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    De quoi parlez vous ?

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    de ton application.ini

  9. #9
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    [production]
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    includePaths.library = APPLICATION_PATH "/../library"
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    appnamespace = "Application"
    resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
    resources.frontController.params.displayExceptions = O
     
    #Layout
    resources.layout.layout = "layout"
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
     
    #Modules
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.modules = ""
     
    #BDD
    resources.db.adapter = "pdo_mssql"
    resources.db.params.username =
    resources.db.params.password =
    resources.db.params.dbname = "tuto"
    [staging : production]
     
    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    resources.frontController.params.displayExceptions = 1
    Que faut il ajouter dans le ini, je comprends pas vraiment.

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ton namespace c'est Application
    t'as classe doit appeler Application_Model_Tuto1,
    t'as pas fait le quickstart ?

  11. #11
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Si j'ai fais mais j'avous que j'ai du mal a commprendre.

    Donc que faudrai t'il mettre dans le ini a la place du boostrap ?

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Si j'ai fais mais j'avous que j'ai du mal a commprendre.

    Donc que faudrai t'il mettre dans le ini a la place du boostrap ?
    Si tu comprends pas c'est pas la peine de bidouiller, commence par maitriser le langage avec de passé au niveau supérieur. chaque chose en son temps, si tu brules les étapes t'y arrivera jamais.

  13. #13
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Justement contrairement a ce que tu penses, je maitrise parafaitement la POO, php.

    Mais la conception de zend je n'y comprends pas.

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Justement contrairement a ce que tu penses, je maitrise parafaitement la POO, php.

    Mais la conception de zend je n'y comprends pas.
    si tu le dis,
    met le nom correct a ta classe et ça marchera

  15. #15
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Est ce que mon bootstrap contient des chose inutile ?

    Donc le nom de ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Application_Model_Tuto1 {
            //
    }
    Et je l'instancie comme sa ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public function testAction()
    	 {
    	 $tuto1 = new Application_Model_Tuto1();
    	 $this->view->tabTuto1 = $tuto1->find();
    	 }

  16. #16
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    le problème est que t'as pas suivis ce que je t'ai dis, t'as recopié des bouts du tuto de Julien qui n'est pas dans la même version que toi

    donc je reviens ce que j'ai dit :

    - soit tu prends la même version que le tuto
    - soit tu suis le quickstart

    bidouiller les deux ne marche pas

  17. #17
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Oui en effet....

    Pour le model il doit pas plutot s'appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application_Modules_Default_Models_Tuto1
    Puisque le fichier Tuto1.php se trouve la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    application/modules/default/models/Tuto1.php

  18. #18
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    suis le quickstart

  19. #19
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Je l'ai deja fais.

    Mais il a pas le syteme modulaire...


    De plus je cite :
    Notez le préfixe de classe: Application_Model_DbTable. Le premier segment est "Application", le nom du module, puis vient le nom du composant "Model_DbTable" qui est lié au dossier models/DbTable/ du module.
    Sa m'aide pas.

  20. #20
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    non puisque que t'as mélangé avec le tuto de Julien, fait les choses proprement et tu verras que tout marche très bien

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2009, 01h43
  2. Chargement de classe via dlopen
    Par Higestromm dans le forum C++
    Réponses: 4
    Dernier message: 18/05/2006, 16h14
  3. [Applet] Problème chargement de classe
    Par simsky dans le forum Applets
    Réponses: 1
    Dernier message: 08/05/2006, 19h31
  4. [SunOne] Problème de chargement de classe Xerces sous SunOne
    Par cocula dans le forum Glassfish et Payara
    Réponses: 3
    Dernier message: 11/01/2006, 15h46
  5. [Chargement de classe][noms de classe relatifs]
    Par freudy dans le forum Langage
    Réponses: 5
    Dernier message: 21/04/2004, 11h36

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