Déplacement du code d'initialisation dans un plugin

Pour réaliser nos tests, nous allons devoir mettre en place un certain nombre de choses, comme nous le réalisons actuellement dans bootstrap.php. Globalement, on va faire la même chose, sauf qu'on va utiliser une base de données différente pour les tests. Pour que le code soit mieux organisé, on va déplacer une partie du code de bootstrap.php dans un plugin. L'avantage de ce dernier, c'est qu'il va pouvoir intervenir non seulement au démarrage, avant l'appel de dispatch sur le contrôleur frontal, mais aussi à d'autres moments clés. Vous pouvez par exemple utiliser le profileur Zend_Db_Profiler en l'initialisant dans le constructeur du plugin, puis en ajoutant les données du profilage à votre sortie. La classe pourra également être réutilisée pour un autre projet.

Nous modifions donc le fichier bootstrap.php :

/application/bootstrap.php


<?php
require_once 'Zend/Loader.php'

// Installe le chargeur automatique de classes
Zend_Loader::registerAutoload(); 

// Charge la classe d'initialisation
require_once 'Initializer.php';
 
// Récupère une instance de controlleur principal
$frontController Zend_Controller_Front::getInstance(); 

// Enregistre le plugin d'initialisation
$frontController->registerPlugin(new Initializer('development')); 

// Demande au controller de traiter la requête
$frontController->dispatch();
?>

Et nous créons un nouveau fichier qui va contenir le code de notre plugin.

/application/Initializer.php


<?php
class Initializer extends Zend_Controller_Plugin_Abstract
{
  public function 
__construct ($env 'production')
  {
    
// On indique l'endroit où sont placés les contrôleurs
    
Zend_Controller_Front::getInstance()->addControllerDirectory('../application/controllers');
        
    
// On prépare une connexion avec le driver PDO MySQL
    
switch($env) {
      case 
'test':
        
$dbname 'votreapp_test';
        break;
      default:
        
$dbname 'votreapp';
    }
    
$db Zend_Db::factory('pdo_mysql', array(
       
'host' => 'localhost' ,
        
'username' => 'root' ,
        
'password' => '' ,
        
'dbname' => $dbname
    
));
        
    
// On place l'instance de la connexion dans le registre
    
Zend_Registry::set('db'$db);
  }
}
?>

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <php>.

Plus d'informations sur les options de formatage

CAPTCHA
La vérification ne tient pas compte des minuscules ou des majuscules.
Image CAPTCHA
Enter the characters shown in the image.