Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 01-10-2010 15:07:01

Denis. Beurive
Membre
Date d'inscription: 06-06-2009
Messages: 35

[Résolu] [Bootstrap] Ordre des initialisations.

Salut à tous,

J'ai ajouté des instructions à ma classe "Bootstrap".

Code:

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

 

#2 02-10-2010 02:51:33

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Résolu] [Bootstrap] Ordre des initialisations.

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.

Hors ligne

 

#3 02-10-2010 11:52:12

Denis. Beurive
Membre
Date d'inscription: 06-06-2009
Messages: 35

Re: [Résolu] [Bootstrap] Ordre des initialisations.

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

 

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