Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour
je suis étudiant et j'ai un projet de fin d'études( developpement d'une application web de ma faculté avec zendfreamwork et myslq) et je suis débutant en utlisation de zendframework, j ai suffisment de connaissances en php et la programmation orientée objet pour que je puisse utilser zend, mais mon problème que je l'utlise sans comprendre son principe, juste j'apprends des codes que je trouve sur internet par coeur.
Par exemple ce code ci-dessous que je mette dans toutes mes applications web avec zend j'arrive pas à bien comprendre l'ulité de chacun de ses lignes selon le principe et l'architecture de zend.
Ma question SVP est de m'aider par une methode ou quelque chose comme ça pour que je puisse utliser zend de telle façon à comprendre ce que je vient d'écrire dans les lignes de mon code zend et non pas aprrendre des codes par coeurs que je rencontre sur le net.
$config = new Zend_Config_Ini('./application/config.ini', 'general'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); // Mise en place de la BDD $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db); // setup controller $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->setControllerDirectory('./application/controllers'); Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts')); // run! $frontController->dispatch();
merci d'avance pour les gens qui veulent m'aider car vraiment j ai besoin d'aide et je dois présenter mon projet au plutot le mois 10
EDIT : [ code] [/ code]
Dernière modification par Mr.MoOx (24-09-2009 09:38:01)
Hors ligne
Bonjour,
Je vais essayer d'être concis et efficace :
$config = new Zend_Config_Ini('./application/config.ini', 'general'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config);
$config contient les données de configurations du fichier config.ini
ensuite tu mets $config dans la "Registry". La registry est un système qui remplace des variables globales : tu as accès partout aux données de la registry en faisant Zend_Registry::get("nom_de_l_element");
// Mise en place de la BDD $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db);
Dans ton config.ini, tu as mis les paramètres de connexion à ta base. Tu les récupères dans $config->db (je t'invite à aller voir Zend_Config_Ini dans la doc pour voir comment marche la transformation de ton config.ini en $config). Tu dis ensuite que c'est la configuration par défaut de Zend_Db_Table, un système du ZF pour accéder aux bases de données.
// setup controller $frontController = Zend_Controller_Front::getInstance();
Le principe du MVC2 (Model-View-Controller version 2) est que toutes les requêtes que tu fais vont passer par un aiguillage géant appelé le "front controller". Donc là tu crées une instance de ce front-controller. il faut ensuite le configurer pour que tes requêtes soient orientées vers les bonnes actions.
$frontController->throwExceptions(true); $frontController->setControllerDirectory('./application/controllers'); Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts'));
Là tu configures ton front controller :
- tu lui dis de renvoyer les exceptions s'il y en a pour faciliter le débug
- tu lui dis où trouver les controllers
- tu lui dis où trouver les layouts
// run! $frontController->dispatch();
Maintenant que ton front-controller est configuré, tu le lances et tu lui demandes de faire les actions correspondant à la requête que l'internaute a faite.
Un dernier point, quand tu vois une construction du genre :
$objet = MaClasse::getInstance();
C'est un singleton : une classe qui ne peut avoir qu'une seule instance. Partout dans le code quand tu tapes cette ligne tu récupères la même instance unique qui a gardé les valeurs qui lui ont été envoyé auparavant (à l'intérieur d'une page, c'est réinitialisé à chaque page). Si tu cherches singleton dans google, tu devrais avoir quelques millions de pages qui t'expliquent cette construction (ou design pattern).
J'espère que j'ai été clair,
Philippe
Hors ligne
J'espère qu'avec quelques commentaires ça va t'aider
//chargement de la section [general] du fichier de config $config = new Zend_Config_Ini('./application/config.ini', 'general'); //Récupération du registre (grosse fourre tout, dont on a accès par tout dans l'application // donc très pratique, mais attention à ne pas trop en mettre ) $registry = Zend_Registry::getInstance(); //enregistrement de ma section [general] de config dans le registre avec la clé 'config' $registry->set('config', $config); // Mise en place de la BDD // on utilise la config pour créer une connexion à la base de donné via la factory // la factory se débrouille avec les paramètres pour trouver le bon adaptateur (mysqli, pdo_mysql ou autre) // ensuite cela créer la connexion de manière abstraite $db = Zend_Db::factory($config->db); // Toutes les Zend_Db_Table instancié utiliseront par défault cette connexion // très souvent on n'a qu'une base de donné c'est donc une ligne "classique" Zend_Db_Table::setDefaultAdapter($db); // setup controller // Récupération de l'instance unique du controller frontal (cf Design pattern Singleton) $frontController = Zend_Controller_Front::getInstance(); // On indique au front controller de renvoyer les exceptions // en gros lorsque qu'un trow new Exception est balancé, le front les intercepte et ne les renvois pas // donc pour debugger c'est pas très pratique $frontController->throwExceptions(true); //no comment $frontController->setControllerDirectory('./application/controllers'); Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts')); // run! //le dispatching de l'application, qui va balancé tout le processus de routage et d'execution des actions // cf le lien dessous $frontController->dispatch();
Tout un schéma sur le dispatching, qui va surement t'éclairer : http://www.kitpages.fr/zf_helper_plugin.php
( Merci à Philippe d'ailleurs car je me sers souvent de cette article pour expliquer le processus )
EDIT : grilled
Dernière modification par Mr.MoOx (24-09-2009 09:55:30)
Hors ligne
Sinon, je conseillerais aussi la lecture de cet excellent ouvrage :
Zend Framework : Bien développer en PHP
ou encore, en anglais :
Zend Framework in Action
Cela te permettra de maitriser les concepts, ce qui ne sera pas plus mal pour la présentation de ton projet.
Jean
Dernière modification par Jean Szabo (24-09-2009 10:18:08)
Hors ligne
Moi, je conseille de lire la doc, voir plutot le quickStart, car tout est dans le quickstart..
Hors ligne