plateforme de développement en php5 (zend + doctrine)
DESCRIPTION
L'une de mes présentations à 2SI la SSII où je travailleTRANSCRIPT
Plateforme de développement en PHP5.
Zend Framework + Doctrine.Présentation:
M. Morel CORNNERY M. Boubacar DOUMBOUYA
Plan
• Introduction• Vue globale sur zend Framework• Présentation Doctrine (Modèle) • Exemple d’application avec zend et doctrine• Déploiement• Démo
Introduction
• Objectif d’une plateforme de développement?– Professionnaliser le développement des application
web .• Comment?
– Avec des outils (Framework)• Une structuration• Une industrialisation• Standardisation• Internationnalisation• Pérennite
Vue globale sur zend Framework
• Présentation• Points forts• Points faibles• Composants• Architectures• Sécurité
Présentation• Framework open-source PHP 5, Oriente Objet, initié par Zend. • Agé d’un plus de trois (3) ans• Une communauté très vivante et qualifiée (180 pers)• Des conventions complètes• Une documentations en plusieurs langues (30)• De nombreuses librairies pratiques• Une architecture de base minimale
– Objectif ?• Simplifier le développement des grosses applications webs.• Développer plus vite
– Comment?• Ajout de nombreux composants (librairies ) +• Une approche MVC visant a simplifier les taches du développeur • Améliorer la qualité du code.
Points forts
• Sa souplesse et sa simplicité• Ses conventions complètes basées sur PEAR• La structure et l’étendue de ses librairie• Son model de développement ouvert• La confiance et l’engagement des
professionnels pour ce projets– Google, IBM et plusieurs centaines de d’entreprise
qui l’utilisent actuellement• Sa documentation complète
Atouts fonctionnels• Documentation• Configurabilité• Sécurité• Aide debugging• Auto-loading• Helpers• Test fonctionnels• ORM• I18n/L10n (internationalisation)
Points faibles
• Pas de système de plugins• Il faut tout créer soit même lors de la
première installation (configuration, bootstrap,…)
• Intégration avec d’autres composants des autres Framework est assez complexe, voir impossible
Architectures
• 48 composants à l’heure actuelle, avec peu d’inter- dépendance– Noyau (Core)– Interopérabilité, services web– Gestion des données– Internationalisation– MVC
Architecture de zend Framework
Librairies
• Zend_Controller
• Zend_Form
• Zend_View
• Zend_Acl
• Zend_Auth
Sécurité
• Les attaques courantes sur le web:– XSS, injection SQL, Injection JavaScript, Session et
cookies• Les solution proposées par Zend:
– Zend_Validate– Zend_Filter– Zend_Session
Présentation de doctrine
• Présentation• Points forts• Points faibles• Architectures• Composants
Présentation• Doctrine est une (ORM) pour PHP 5.2.3+ • Doctrine S'appuie sur PDO et est lui même divisé
en deux couches:– la couche ORM– la couche DBAL
• Doctrine vient avec son propre langage appelé Doctrine Query Language (DQL), inspiré de Hibernates (HQL).
• Ceci fournit une réelle alternative au SQL basique maintient la flexibilité sans exiger la duplication inutile de code.
Points forts• Utilisation de DQL (doctrine query language) qui
permet de faciliter très largement l'écriture de requête SQL dîtes complexes
• Le nombre de fonctionnalités relativement important• Interfaçage avec de nombreuses Bdd (oracle, ibm
informix, sqlsever, postgresql, mysql,Firebird,sqlite,…)• Tutoriels très efficaces et prise en main rapide• Bonnes améliorations des performances liées à
l'utilisation d'active record dans les dernières release
Points faibles
• Pas de connecteur pour les annuaires comme LDAP
• Communauté pas assez grande
Architecture
composants
• Doctrine::Manager• Doctrine::Connection• Doctrine::Record• Doctrine::Table• Doctrine::Collection• Doctrine::Validator• Doctrine::View
Architecture d’une application avec Zend Framework et doctrine
Workflow d’une requete dans ZF
Requête
Réponse
Routage
Contrôleur (init())
Pré-envoi
ACTION
Post-envoi
(Module/controller/action)
Répartiteur (dispatcher)
Contrôleur frontal
Exemple d’application avec zend et doctrine
• Organisation de l’application• Les conventions de nommages• Notions importantes
– Urls– Bootsrap– Configuration – Controllers– Vues– Forms– Layout
– Models
Organisation de l’application
MonapplicationApplication
Bootsrap.phpGlobal.phpConfiguration layoutsModules
ReferentielControllersViews
LibraryZendDoctrineSsi Forms
Publics
Convention de nommage• #Zend_Db représente un composant que l'on
peut aussi appeler package (en référence à Java),
• Matérialisé par le script /library/Zend/Db.php, la classe représentée étant Zend_Db.
• Cette convention de nommage sera utilisée pour charger des classes plus tard. Elle est identique à certains projets tels que PEAR. Remplacez les underscores ( _ ) dans le nom de la classe par des slashs ( / ), pour voir apparaître l'arborescence du fichier.
URLs
Basic URL routes:• /controller/action• /controller/action/param/value• /module/controller/action• /module/controller/action/param/valueExemple: BASE_URL.'referentiel/branche/';
Bootstrap (arborescence)
Bootstrap
Bootstrap
Bootstrap(Doctrine)
Bootstrap(Doctrine suite)
configuration
Configuration
Controllers
controller
Action
Forms(arborescence)
Forms (code)
Views (Arborescences)
Views(Formulaire)
Views (Liste)
Layout (arborescence)
Layout(header)
Layout(body)
Model(arborescence)
Model(Base)
Model(Base 2)
Model (méthodes)
Déploiement
• Environnement de déploiement• Version PHP 5.2.x• Modules PHP à activer
– PDO avec les drivers nécessaires– php_value short_open_tag <? ?>
• Version apache 2.x• Modules apache a activer
– Mod Rewrite
CONCLUSION
FIN