420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1
Zend Framework Simplifie de beaucoup le travail du développeur. MVC intégré Abstraction du modèle ○ Pas de programmation de requêtes directement, on utilise plutôt les méthodes qui seront convertis par Zend dépendamment de la base de données utilisées. Si on change de base de données, on n’a rien à changé !!! URL friendly: ○ Au lieu de : ○ Zend : (le site de notes de cours est programmé avec Zend Framework) 2
Zend Framework Plusieurs classes disponibles Validation des champs (ex: courriel) Envoyer un courriel en format texte/HTML Captcha … Le fichier de configuration est prédéfini. Les dossiers ne sont pas accessibles à partir du navigateur puisqu’ils sont placés derrière le « document root » (htdocs). Le seul fichier exposé est index.php ! 3
Zend Framework Formation des URL - b63-in : controlleur - Notes : action class B63InController { public function notesAction() { // code de la page } 4
Zend Framework class B63InController { public function notesAction() { // Le paramètre « section » possède la valeur « css » // Un peu comme : $_GET["section"] = "css"; } 5
Zend Framework La librairie est volumineuse, mais elle en vaut la chandelle. De plus en plus de sites d’envergures utilisent Zend Framework Alternatives : CakePHP, … 6
Paramètrer Apache Voici un exemple de configuration d'un Virtual Host pour Zend Framework: Donc dans un navigateur, on ferait : Listen :84 ServerName localhost DocumentRoot "D:\Zend\public" Options Indexes +FollowSymLinks AllowOverride All Order allow,deny Allow from all 7
Aide mémoire Pour lire un paramètre GET/POST du contrôleur : $this->_getParam("nomParam") Pour lire une constante de application.ini Dans application.ini site.url = " Dans le contrôleur : $maVariable = Zend_Registry::getInstance()->config->site->url; Dans bootstrap : $configArray = $this->getOptions(); $configuration = new Zend_Config($configArray); Zend_Registry::getInstance()->config = $configuration; 8
Aide mémoire (suite) Pour changer l'état du projet (dev/prod) : Dans index.php : defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development')); 9