Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-09-2009 00:34:24

Med3500
Nouveau membre
Date d'inscription: 23-09-2009
Messages: 1

Code incompréhensible

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.


Code:

$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

 

#2 24-09-2009 09:38:36

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Code incompréhensible

Bonjour,

Je vais essayer d'être concis et efficace :

Code:

$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");

Code:

// 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.

Code:

// 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.

Code:

$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

Code:

// 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 :

Code:

$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


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 24-09-2009 09:54:44

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Code incompréhensible

J'espère qu'avec quelques commentaires ça va t'aider

Code:

//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 big_smile

Dernière modification par Mr.MoOx (24-09-2009 09:55:30)

Hors ligne

 

#4 24-09-2009 10:06:16

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Code incompréhensible

Pas assez rapide petit scarabée smile


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 24-09-2009 10:17:39

Jean Szabo
Membre
Lieu: Lausanne
Date d'inscription: 21-08-2008
Messages: 12
Site web

Re: Code incompréhensible

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)


ZCE - Blog - netinfluence - Lausanne - Suisse

Hors ligne

 

#6 24-09-2009 10:41:01

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Code incompréhensible

Moi, je conseille de lire la doc, voir plutot le quickStart, car tout est dans le quickstart..


----
Gruiiik !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages