Exercice 1 : Zend_Loader
1) Créer le dossier /www/htdocs/examples
2) Créer le fichier zend_loader.php dans le dossier examples/
3) Utilisez le composant Zend_View en le chargeant manuellement avec Zend_Loader
4) Utilisez le composant Zend_Date en le chargeant automatiquement avec Zend_Loader
Exercice 2 : Zend_Config
1) Créez le fichier /www/htdocs/examples/ZendConfig.ini
2) Chargez dans le fichier PHP /www/htdocs/examples/ZendConfig.php les paramètres définies dans /www/htdocs/examples/ZendConfig.ini
Exercice 3 : Zend_Log
1) Créez le dossier /www/htdocs/log/ et donnez lui les droits du groupe www-data
2) Créez le fichier /www/htdocs/examples/ZendLog.php et, en utilisant Zend_Log(), écrivez le message log "An error has been detected" de priorité INFO dans le fichier /www/htdocs/log/zend.log
Exercice 4 : Zend_Debug
1) Dans le fichier /www/htdocs/examples/ZendDebug.php que vous créerez, utilisez Zend_Debug::dump() pour afficher la liste des noms des classes déclarées dans le script courant
Exercice 5 : Zend_Registry
1) Dans le fichier /www/htdocs/examples/ZendRegistry.php que vous créerez, complétez le script suivant afin que la propriété prop de l'objet $obj prenne la valeur 'value' et l'affiche
<?php // On charge l'autoLoader require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); $obj = new stdClass; Zend_Registry::set('monobjet', $obj); class UneClasse { public function __construct() { [A COMPLETER] = 'value'; } } $a = [A COMPLETER]; echo [A COMPLETER]; // value
Correction de l’exercice 1
Zend loader permet le chargement des classes du répertoire library. il est utilisé à la place de include et require traditionnels Zend loader peut être utiliser de deux façons :
- Pour le chargement manuel d'une classe ou d'un fichier PHP à chaque fois que l'on veut s'en servir
- Pour le chargement automatique qui permet l'appel automatique de Zend_Loader lorsque PHP veut utiliser un classe ( ce procéder s'appelle autoload)
L'autoload est le plus utilisé et affecte les temps de réponses des serveurs de manière de moins en moins significative au fur et à mesure de l'apparition de nouvelles versions PHP.
Pour une raison de simplicité, nous allons créer un dossier examples/ dans /www/htdocs/
$ mkdir /www/htdocs/examples $ cd /www/htdocs/examples
On va commencer par créer le fichier zend_loader.php dans notre dossier /www/htdocs/examples
$ nano zend_loader.php
En utilisant le chargement manuel :
// Inclusion du composant Zend_Loader include 'Zend/Loader.php'; // Utilisation de Zend_Loader pour utiliser Zend_View Zend_Loader::loadClass('Zend_View'); // Création d’un objet Zend_View $view = new Zend_View(); var_dump($view);
En utilisant le chargement automatique :
// Inclusion de la classe Zend_Loader require_once 'Zend/Loader/Autoloader.php'; // Déclaration du chargement automatique $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); // Utilisation d’une classe sans chargement manuel $date = new Zend_Date(); var_dump($date);
Correction de l’exercice 2
Zend_Config est conçu pour simplifier l'accès et l'utilisation des données de configuration dans les applications. Il fournit une interface utilisateur basée sur des propriétés d'objets imbriquées. Les données de configuration peuvent venir de sources variées supportant une organisation hiérarchique des données.
On commence par créer notre fichier ZendConfig.ini dans notre dossier /www/htdocs/examples/ :
$ nano /www/htdocs/examples/ZendConfig.ini
On y colle notre fichier de configuration :
; Directives de configuration de la production [prod] database.host = dbserver database.user = dbuser database.pass = dbprodpass database.name = dbname ; Directives de configuration de la dev ; Ces directives héritent de la production [dev : prod] database.host = localhost database.pass = dbpass
On enregistre et on quitte.
Maintenant nous avons besoin du code PHP qui nous permettra d’appeler les variables définies dans le .ini :
On créé le fichier ZendConfig.php toujours dans notre dossier /www/htdocs/examples/ :
$ nano /www/htdocs/examples/ZendConfig.php
<?php // Affichage en mode texte (pour la lisibilité de l’exemple) header('Content-type: text/plain; charset=utf-8'); // On charge l'autoLoader require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); // Création d’un objet contenant les directives de dev $configFile = dirname(__FILE__) . '/ZendConfig.ini'; $config = new Zend_Config_Ini($configFile, 'dev'); // Utilisation de Zend_Config_Ini echo 'Database : ' . $config->database->name . "\n"; echo 'Hostname : ' . $config->database->host . "\n"; echo 'Username : ' . $config->database->user . "\n"; echo 'Password : ' . $config->database->pass . "\n";
On enregistre et on quitte.
On test dans notre navigateur :
Nous pouvons maintenant utiliser nos paramètres du fichier .ini directement dans PHP
Correction de l’exercice 3
Zend_Log est un composant destiné à tous les usages du log. Il supporte l'écriture multiple centralisée, formate les messages envoyés vers les logs, et les filtre.
On créé le dossier qui va recevoir nos fichiers logs :
$ mkdir /www/htdocs/log/On accorde les droits du groupe www-data au dossier afin que PHP puisse écrire dedans :
$ chown www-data:www-data /www/htdocs/log/
On créé le fichier ZendLog.php
$ nano /www/htdocs/examples/ZendLog.php
<?php // On charge l'autoLoader require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); // Création de l’objet log $log = new Zend_Log(); // Enregistrement du journal sur l’écran (affichage) $writer = new Zend_Log_Writer_Stream("/www/htdocs/log/zend.log"); // Ajout de l’enregistreur dans l’objet log $log->addWriter($writer); $log->log("An error has been detected", Zend_Log::INFO);
On exécute notre script en lançant ZendLog.php depuis le navigateur.
Une fois terminé, un fichier zend.log devrait avoir fait son apparition dans le dossier log que nous avons créé précédemment.L'utilisation de Zend_Log() nous permet donc de stocker des logs dans des fichiers bien spécifiques
Exemple d'utilisation :
if ($success) { /* Code PHP */ } else { $log->log("Echec dans l'exécution du script Script.php", Zend_Log::INFO); }
Notez que vous pouvez utiliser les priorités suivantes :
EMERG = 0; // Urgence : le système est inutilisable ALERT = 1; // Alerte: une mesure corrective doit être prise immédiatement CRIT = 2; // Critique : états critiques ERR = 3; // Erreur: états d'erreur WARN = 4; // Avertissement: états d'avertissement NOTICE = 5; // Notice: normal mais état significatif INFO = 6; // Information: messages d'informations DEBUG = 7; // Debug: messages de déboguages
Correction de l'exercice 4
La méthode statique Zend_Debug::dump() affiche et/ou retourne les informations concernant une expression. Cette technique simple de débogage est commune, parce que facile à utiliser de façon ad hoc et n'exigeant aucune initialisation, aucun outils spéciaux, ou environnement de mise au point.
Zend_Debug::dump($var, $label = null, $echo = true);
On créé notre fichier /www/htdocs/examples/ZendDebug.php
$ nano /www/htdocs/examples/ZendDebug.php
<?php // On charge l'autoLoader require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); Zend_Debug::dump(get_declared_classes());
Autre exemple d'utilisation avec un objet :
<?php // On charge l'autoLoader require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); // Création de l’objet log $log = new Zend_Log(); // Enregistrement du journal sur l’écran (affichage) $writer = new Zend_Log_Writer_Stream("/www/htdocs/log/zend.log"); // Ajout de l’enregistreur dans l’objet log $log->addWriter($writer); Zend_Debug::dump($log);
Correction de l'exercice 5
Un registre est un conteneur pour stocker des objets et des valeurs dans l'espace d'application. En stockant la valeur dans le registre, le même objet est toujours disponible partout dans votre application. Ce mécanisme est une alternative à l'utilisation du stockage global.
L'utilisation typique des registres dans Zend Framework est par des méthodes statiques dans la classe Zend_Registry. Alternativement, la classe est un tableau, donc vous pouvez avoir accès aux éléments stockés avec une interface semblable au tableau.
Exemple d'utilisation :
Zend_Registry::set('index', $value); $value = Zend_Registry::get('index');
On créé notre fichier /www/htdocs/examples/ZendRegistry.php
<?php // On charge l'autoLoader require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); $obj = new stdClass; Zend_Registry::set('monobjet', $obj); class UneClasse { public function __construct() { Zend_Registry::get('monobjet')->prop = 'value'; } } $a = new UneClasse; echo $obj->prop; // value
Aucun commentaire:
Enregistrer un commentaire