Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut à tous,
J'ai ajouté des instructions à ma classe "Bootstrap".
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initLogger() { if (! $this->hasResource('logger')) { $logger = new Zend_Log(new Zend_Log_Writer_Stream($this->getOption('logFile'))); return $logger; } } protected function _initTerminal() { $this->_initLogger(); $this->bootstrap('view'); $this->bootstrap('layout'); $terminal = 'iphone'; switch ($terminal) { case 'iphone': { $view = $this->getResource('view'); $layout = $this->getResource('layout'); $conf = $this->getOption('iphone'); /* DBG */// $this->getResource('logger')->log(var_export($conf{'layout'}{'layout'}, true), Zend_Log::INFO); $view->addScriptPath($conf{'view'}{'scriptPath'}); $layout->setLayout($conf{'layout'}{'layout'}); foreach ($conf{'view'}{'helperPath'} as $key => $value) { $view->addHelperPath($key, $value); } }; break; default: break; } } }
J'ai quelques questions par rapport au fonctionnement de cette classe :
1. Est-il possible de "forcer" l'ordre d'exécution des méthodes de la classe?
Dans ma classe, j'initialise un service de LOG applicatif (méthode _initLogger()).
J'utilise le service de LOG dans la méthode _initTerminal(). Le service de LOG doit bien entendu être initialisé au préalable. Comme je n'en suis pas certain, j'exécute la méthode _initLogger() (dans la méthode _initTerminal()).
Je me demande si je ne suis pas du code pourri...
2. Pour quelle raison est-il nécessaire de créer explicitement les ressources telles que "view" ou "loayout"?
Merci,
Denis
Dernière modification par Denis. Beurive (04-10-2010 18:36:12)
Hors ligne
pour s'assurer qu'une initialisation à été effectuer tu peux y aller comme suit:
$this->bootstrap('Logger');
Qui appellera ta méthode initLogger si ce n'est déjà fait
Je ne suis pas trop sur de comprendre ta deuxième question.
Hors ligne
3uclide a écrit:
pour s'assurer qu'une initialisation à été effectuer tu peux y aller comme suit:
Code:
$this->bootstrap('Logger');Qui appellera ta méthode initLogger si ce n'est déjà fait
Je ne suis pas trop sur de comprendre ta deuxième question.
Salut 3uclide,
Je te remercie pour cette réponse. Effectivement, cette écriture est plus élégante.
En ce qui concerne la seconde question :
Je découvre l'implémentation MVC de ZEND, après avoir longuement utilisé celle de ELGG.
Naturellement, j'ai tendance à effectuer des rapprochements entre les deux. Certaines analogies sont pertinentes, et me permettent de comprendre plus rapidement l'implémentation de ZEND. D'autres, en revanche, ne sont pas pertinentes.
Je réalise que ma deuxième question n'a pas de sens du point de vue de l'implémentation MVC de ZEND. J'ai loupé quelque chose.
A+
Hors ligne
Pages: 1