Zend Framework 2 Industrialisez vos développements PHP



Documents pareils
Joomla! Création et administration d'un site web - Version numérique

PHP 5.4 Développez un site web dynamique et interactif

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

les techniques d'extraction, les formulaires et intégration dans un site WEB

Devenez un véritable développeur web en 3 mois!

Formation en Logiciels Libres. Fiche d inscription

DRUPAL Réalisez des développements professionnels avec PHP (2ième édition)

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

Plan de notre intervention 1. Pourquoi le test de charge? 2. Les différents types de tests de charge 1.1. Le test de performance 1.2.

Internet Information Services (versions 7 et 7.5) Installation, configuration et maintenance du serveur Web de Microsoft

Par l'exemple de. Laurent Destailleur

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Comment développer et intégrer un module à PhpMyLab?

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

Refonte front-office / back-office - Architecture & Conception -

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

COMPÉTENCES TECHNIQUES

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Architectures en couches pour applications web Rappel : Architecture en couches

Architecture et infrastructure Web

Compte Rendu d intégration d application

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Catalogue des Formations Techniques

Profil. Formations Certifications. Etienne de LONGEAUX Architecte logiciel/ Lead développeur PHP5/SYMFONY2/ZEND 13 ans d expérience.

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

LICENCE PROFESSIONNELLE SYSTEMES INFORMATIQUES & LOGICIELS

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

CQP Développeur Nouvelles Technologies (DNT)

Code Produit Nom Produit Dernière mise à jour. AM003 Alias Mobile On Demand Licence 1 mois 27/04/2015

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Mercredi 15 Janvier 2014

Mise en œuvre des serveurs d application

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

A5.2.4 Étude d une technologie, d'un composant, d'un outil

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Introduction MOSS 2007

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

LAMP : une nouvelle infrastructure LAMP. Une architecture modulaire. Installation

Documentation de conception

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Comparatif CMS. Laurent BAUREN S Bérenger VIDAL Julie NOVI Tautu IENFA

ECLIPSE ET PDT (Php development tools)

1/15. Jean Bernard CRAMPES Daniel VIELLE

Application web de gestion de comptes en banques

Introduction à. Oracle Application Express

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

Chapitre 1 Windows Server

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

42 Formations Web & Open Source

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

Hébergement de site web Damien Nouvel

INGÉNIEUR - DÉVELOPPEUR SENIOR PHP. 28 ans - 8 ans d'expérience

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Rapport de stage Clément MOYSAN

Programme ASI Développeur

Armand PY-PATINEC 2010

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Drupal, pour quel usage? Comment se positionne Drupal? Les fonctionnalités de Drupal et de son écosystème. L'architecture technique et logicielle Le

Formation : WEbMaster

Une solution opensource d'affichage dynamique - XIBO

Paul FLYE SAINTE MARIE

PROSOP : un système de gestion de bases de données prosopographiques

Windows Server 2012 R2 Administration

Services RDS de Windows Server 2012 R2 Remote Desktop Services : Installation et administration

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

--- SIDOMTECH (Auto-Entreprise) ---

Le Cloud Open-Mind! Emilien Macchi

Guide de l'utilisateur de SAP BusinessObjects Web Intelligence Rich Client

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Cours 20411D Examen

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É PHP. 27 ans - 6 ans d'expérience

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Cloud Computing Maîtrisez la plate-forme AWS - Amazon Web Services

CATALOGUE FORMATIONS DOMAINE Bases de données

//////////////////////////////////////////////////////////////////// Administration bases de données

Maarch V1.4

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

Gestion des bases de données

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Présentation de solutions de Progiciels de Gestion d'epn Forum des Usages Brest 2010

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

Transcription:

Avant-propos 1. Lectorat 15 2. Contenu du livre 15 3. Pré-requis 17 Introduction 1. Un peu d histoire 19 1.1 Petite histoire de l informatique 19 1.2 Petite histoire des langages informatiques 20 1.3 Petite histoire de PHP 22 1.4 Petite histoire de Zend Framework 24 1.5 Regard vers le futur 24 2. Choix 25 2.1 Choix du langage 25 2.2 Choix du framework 28 3. Installations 30 3.1 Installer un serveur Apache - PHP 30 3.1.1 Sous une distribution Linux en utilisant le gestionnaire de paquets 30 3.1.2 Par la compilation 30 3.1.3 Sous Windows 34 3.2 Installer des serveurs PostgreSQL, MySQL et SQLite 35 3.3 Installation de PEAR, PECL et d'autres packages 36 4. Logiciels utiles 38 4.1 Pour Apache 38 4.2 Pour MySQL 38 1/12

4.3 Pour PostgreSQL 39 4.4 Pour SQLite 39 4.5 Environnement de développement 40 4.6 Intégration continue 40 Un peu de théorie 1. Génie logiciel 41 1.1 IHM 41 1.2 Client/Serveur 42 1.3 3-tier 43 1.4 MVC en général 44 1.5 MVC appliqué au Web 45 2. Application à PHP 45 2.1 Présentation des serveurs web 45 2.2 Grands principes de PHP 46 2.3 Points forts et points faibles de PHP 47 2.4 La place de PHP 50 2.5 Industrialisation des développements 50 3. Bases de données 52 3.1 Qu est-ce qu une base de données relationnelle? 52 3.2 Les bases relationnelles courantes 53 3.3 Présentation rapide de PDO 53 4. La solution Zend Framework 54 4.1 Pourquoi choisir Zend Framework 54 4.2 Structurer ses développements 55 4.3 Répartir les tâches 57 4.4 Maîtriser les coûts 57 5. Qualité logicielle 58 2/12

5.1 Intégration continue 58 5.2 Tests unitaires 58 5.3 Métriques 59 5.4 Détection d erreurs 63 5.5 Duplication de code 64 5.6 Lisibilité 65 Application blanche 1. Introduction 67 1.1 Application blanche 67 1.2 Squelette d'application 68 2. Squelette de l'application 69 2.1 Installation du ZendSkeletonApplication 69 2.2 Déclaration des autres dépendances 71 2.3 Mettre à jour les dépendances 73 2.4 Analyse succincte du code obtenu 73 2.5 Recommandations générales 76 3. Configuration du serveur 77 3.1 Création d'un hôte virtuel 77 3.2 Création d'un alias 79 3.3 Recommandations générales 81 3.3.1 Apache 81 3.3.2 PHP 82 4. Création de l'application blanche 83 4.1 Bibliothèques personnalisées 83 4.2 Jeu de templates 84 4.3 Gestion de l'authentification 85 4.4 Modules réutilisables ou fréquemment utilisés 86 4.5 Recommandations générales 87 3/12

Le module, notions de base 1. Introduction et installation 89 1.1 Notion de module 89 1.2 Initialisation du dépôt de l'application galerie 90 1.3 Création d'un hôte virtuel 92 1.4 Création d'un alias 93 2. Initialisation d'un module 94 2.1 Création de l'arborescence d'un module 94 2.2 Création du fichier Module.php 96 2.3 Gestion du chargement automatique 96 2.3.1 AutoloaderProviderInterface 96 2.3.2 StandardAutoloader 97 2.3.3 ClassMapAutoloader 97 2.4 Gestion des sources 99 2.4.1 ConfigProviderInterface 99 2.4.2 Configuration minimaliste 100 2.4.3 Déclaration de la template_map 100 2.5 Gestion des routes 102 2.6 Création du contrôleur et des vues 107 2.7 Configuration de l'internationalisation 109 2.7.1 Fichier de configuration 109 2.7.2 Module.php 111 2.7.3 Installation et configuration de Poedit 112 2.7.4 Création du projet Poedit 114 2.7.5 Modification des vues 116 2.8 Configuration de l'accès aux modèles 118 2.9 Configuration d'aide de vue 120 3. Modèles Zend\Db - Notions de base 122 3.1 Introduction 122 3.2 Classe Entité (Entity) 125 3.2.1 Introduction 125 3.2.2 Utilisation des accesseurs et des mutateurs 130 4/12

3.2.3 Utilisation des tableaux 134 3.3 Classe Gestionnaire (EntityManager) 139 3.3.1 Premier jet 139 3.3.2 Création d'un gestionnaire abstrait 143 3.3.3 Extension du modèle à des fonctionnalités plus larges 149 3.4 Création de requêtes SQL 151 3.4.1 Se donner les moyens de voir ce que l'on fait 151 3.4.2 Possibilités offertes par select 153 3.4.3 Possibilités offertes par insert 159 3.4.4 Possibilités offertes par update 162 3.4.5 Possibilités offertes par delete 163 3.5 Entité et gestionnaire pour plusieurs tables 163 3.6 Utilisation du modèle 168 4. Contrôleurs - Notions de base 169 4.1 Introduction 169 4.2 Gestion de l'accès aux données 171 4.3 Affichage d'une liste de données 173 4.4 Affichage d une donnée unique 174 4.5 Traitement de la requête 176 4.6 Traitement de la réponse 179 5. Vues - Notions de base 181 5.1 Introduction 181 5.2 Organisation de sa présentation 182 5.3 Utilisation des aides de vues 184 6. Formulaires - Notions de base 185 6.1 Introduction 185 6.2 Partage des responsabilités 186 6.3 Création d'un formulaire 188 6.4 Impacts sur un modèle Zend\Db 190 6.5 Affichage du formulaire dans la vue 194 6.6 Utilisation d'un formulaire 195 6.7 Internationalisation 199 5/12

6.7.1 Labels, version simple 199 6.7.2 Labels, version élaborée 201 6.7.3 Messages d'erreurs 206 Le module, aspects avancés 1. Les formulaires - Notions avancées 209 1.1 Réalisation d'un composant générique 209 1.1.1 Objectifs pour le formulaire 209 1.1.2 Objectifs pour l'entité 212 1.1.3 Classes permettant d'atteindre ces objectifs 214 1.2 Présentation des différents éléments de formulaire 219 1.2.1 Présentation générale 219 1.2.2 Champs simples 220 1.2.3 Label 222 1.2.4 Champs temporels 224 1.2.5 Champs nécessitant des données 224 1.2.6 Champs multiples 226 1.3 Utiliser Ajax 227 1.4 Personnaliser le rendu graphique 231 2. Les contrôleurs - Notions avancées 232 2.1 Créer un contrôleur Ajax 232 2.2 Créer des interfaces plus conviviales 234 2.3 Aides d'action 240 2.3.1 Présentation générale 240 2.3.2 Redirection 241 2.3.3 Params 242 2.3.4 FlashMessenger 243 2.3.5 Forward 246 2.4 Créer une aide d'action 247 3. Les vues - Notions avancées 249 3.1 Configuration avancée des vues 249 6/12

3.2 Création d'un layout 251 3.3 Relations contrôleur/layout/vues 254 3.4 Création d'aides de vues 255 3.5 Utiliser les possibilités du langage HTML5 259 3.6 Utiliser des frameworks ou des bibliothèques JavaScript 259 3.7 Rajouter des frameworks CSS 260 Plus loin avec les modèles 1. Modèles Zend\Db - Notions avancées 261 1.1 Créer une requête pour une liste de sélection 261 1.1.1 Contexte 261 1.1.2 Composant générique 262 1.1.3 Utilisation du composant 267 1.2 Hydrator 269 1.2.1 Utilisation des accesseurs et mutateurs 269 1.2.2 Utilisation des propriétés 272 1.2.3 Tableau 274 1.2.4 Hydrating 275 1.2.5 Stratégies 275 1.2.6 Lien avec les formulaires 275 2. Modèles Doctrine 276 2.1 Introduction 276 2.2 Classe modèle 276 2.3 Utilisation du modèle 279 Outils transverses 1. Session 283 1.1 Stocker un élément de la session 283 1.1.1 Conteneur 283 1.1.2 Configurations 285 7/12

2. Système de cache 287 2.1 APC 287 2.2 Autres systèmes de cache 288 3. Logging 289 3.1 Écrire dans un fichier de log 289 3.2 Logging interactif 291 4. Gestion des identités et des permissions 292 4.1 Outils proposés par ZF2 292 4.1.1 Authentification 292 4.1.2 Permissions 293 4.2 ZfcUser 294 4.2.1 Introduction 294 4.2.2 Installation du projet 295 4.2.3 Modification de la base de données 296 Génération de contenu tiers 1. CSV 297 1.1 Pré-requis 297 1.1.1 Désactiver la partie vue 297 1.1.2 Gérer la forme de la réponse 297 1.2 Réalisation de l'export CSV 298 1.2.1 Gérer les données 298 1.2.2 Envoyer le résultat 299 2. Excel 300 2.1 Pré-requis 300 2.1.1 Installation d'un module PEAR 300 2.1.2 Chargement à la demande du module 301 2.2 Réalisation de l'export Excel 302 8/12

2.2.1 Création d'un composant générique 302 2.2.2 Réalisation d'un exemple concret 311 3. Courriels 315 3.1 Envoyer un courriel 315 3.2 Gérer l'envoi aux formats Texte et HTML 318 3.3 Utiliser des templates 319 4. Diagrammes 321 4.1 Création d'un composant générique 321 4.2 Création d'un composant concret 324 4.3 Création du contrôleur 326 4.4 Affichage du graphique 327 Communication inter-applicative 1. XML-RPC 329 1.1 Introduction 329 1.2 Serveur 329 1.3 Client 330 2. SOAP 331 2.1 Introduction 331 2.2 Serveur 331 2.3 Client 331 3. RSS 332 3.1 Writer 332 3.2 Reader 336 4. REST 338 4.1 Introduction 338 4.2 Utilisation 338 9/12

Sécurité 1. Considérations générales sur la sécurité 341 2. Consignes élémentaires 343 2.1 Votre application vit dans un écosystème 343 2.2 Suivre des règles de codage claires 344 2.3 Toujours vérifier les données 345 2.4 Bien utiliser la session 347 2.5 Ne pas donner d'indices 348 3. Mettre en place une politique de sécurité 348 3.1 Paramétrage des serveurs 348 3.2 La session 351 3.3 Utilisation du cryptage 353 3.4 Processus de création d'un compte utilisateur 353 3.5 Stockage du mot de passe 355 3.6 Processus d'authentification 355 3.7 Utilisation des courriels 356 3.8 Conclusion 357 4. Points faibles usuels 357 4.1 XSS 357 4.2 CSRF 358 4.3 Fixation de session 358 4.4 Injections de code SQL 359 4.5 Conclusion 360 Concepts clés utilisés par ZF2 1. Nouvelles pratiques 361 1.1 Espaces de nommage 361 1.2 Fonctions anonymes 362 10/12

1.3 Closures 363 1.4 Inclusion de tableaux 364 1.5 Utilisation d'interfaces 365 2. Motifs de conception usuels 366 2.1 Singleton 366 2.2 Fabrique 368 2.3 Proxy 369 2.4 Template 370 2.5 Décorateur 371 2.6 Prototype 372 2.7 Adaptateur 372 2.8 Itérateur 373 2.9 Chaîne de responsabilité 376 2.10 Fonction de rappel 378 3. Injection de dépendance 380 3.1 Explication de la notion 380 3.2 Injecteur de dépendance 383 3.2.1 Introduction 383 3.2.2 Définir les dépendances précisément 384 4. Annotations 386 4.1 Explication de la notion 386 4.2 Gestionnaire d'annotations 388 5. Programmation événementielle 389 5.1 Explication de la notion 389 5.2 Gestionnaire d'événements 390 5.2.1 Description des composants ZF2 390 5.2.2 Utilisation du gestionnaire d'événements 399 Réponses aux problématiques de performance 11/12

1. Modèles 401 1.1 Règles générales 401 1.2 Optimisations côté base de données 405 1.2.1 Mieux vaut faire travailler SQL que PHP 405 1.2.2 Recommandation de conception pour les clés primaires 405 1.2.3 Utilisation des index 406 1.2.4 Utilisation des déclencheurs 407 1.3 Optimisations côté ZF2 pour l'accès aux données 412 1.3.1 Mieux vaut faire travailler SQL que PHP 412 1.3.2 Recommandation d'utilisation pour les clés primaires 412 1.3.3 Utilisation des vues 413 1.3.4 Le point de vue extrême 415 1.4 Optimisations côté ZF2 pour l'écriture de données 416 1.4.1 Mieux vaut faire travailler SQL que PHP 416 1.4.2 Cas particulier du clonage de données 416 1.4.3 Modifier plusieurs enregistrements en une requête 417 1.4.4 Le point de vue extrême 417 1.5 Cache de données 417 1.6 Outils tiers 418 2. Architecture 419 2.1 Les bases 419 2.1.1 Chargement automatique 419 2.1.2 Correction d'erreurs 419 2.1.3 Trop grand nombre de classes 420 2.1.4 Trop grand nombre de méthodes 421 2.2 Bonne utilisation de l'architecture de ZF2 422 2.3 Utiliser un cache d'opcode 422 3. Évaluer son propre code 423 3.1 Évaluation générale 423 3.2 Évaluation fine 423 Index 425 12/12