Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL)



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

PHP 5.4 Développez un site web dynamique et interactif

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

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

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

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

Programme ASI Développeur

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

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

Formation : WEbMaster

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

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

Programmation Web. Introduction

Point sur les solutions de développement d apps pour les périphériques mobiles

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

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

Compte Rendu d intégration d application

COMPÉTENCES TECHNIQUES

Intégration de systèmes

ECLIPSE ET PDT (Php development tools)

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

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

Windows Azure Platform Développez, déployez et administrez pour le Cloud Microsoft

SPT Description du cours NORAMSOFT SPT2013. SharePoint 2013 pour développeurs

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

Business Intelligence avec SQL Server 2012

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)

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

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

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

Yannick Dalbin Développeur Freelance 616 Chemin Du Vallon Des Gavots Aubagne

Notre processus d embauche

Nouveautés joomla 3 1/14

Armand PY-PATINEC 2010

Formation Webmaster : Création de site Web Initiation + Approfondissement

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

42 Formations Web & Open Source

Tableau comparatif des offres Visual Studio

SITE WEB E-COMMERCE ET VENTE A DISTANCE

M2 SIAW - Exemples de stages réalisés. Gabriella Salzano - Document de travail - 28/1/2015

Fiche Technique Windows Azure

Citrix XenApp 7.5 Concepts et mise en oeuvre de la virtualisation d'applications

SYSTÈMES D INFORMATIONS

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

10. Base de données et Web. OlivierCuré

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

Messagerie asynchrone et Services Web

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

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

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

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

PHP et le Cloud. All rights reserved. Zend Technologies, Inc.

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

LICENCE PROFESSIONNELLE

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Qu'est-ce que le BPM?

Cyrille GUERIN 823, place Soulanges Brossard, J4X1L8

CQP Développeur Nouvelles Technologies (DNT)

Architectures en couches pour applications web Rappel : Architecture en couches

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

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

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

Application web de gestion de comptes en banques

Bien architecturer une application REST

Patrons de Conception (Design Patterns)

Technologies Web avancées. ING1 SIGL Technologies Web avancées

TAGREROUT Seyf Allah TMRIM

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

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

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

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

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

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

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

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

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

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

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

Chapitre 1 Introduction

Module BD et sites WEB

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

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

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

Diffuser un contenu sur Internet : notions de base... 13

Karim EL KHALIFA Web developer

Catalogue des Formations

Vulnérabilités et sécurisation des applications Web

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

Le rôle Serveur NPS et Protection d accès réseau

Windows Server Chapitre 3 : Le service d annuaire Active Directory: Concepts de base

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

Générer du code à partir d une description de haut niveau

Formation en Logiciels Libres. Fiche d inscription

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

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

Par KENFACK Patrick MIF30 19 Mai 2009

SharePoint 2013 Développez en.net pour personnaliser SharePoint (Apps, REST, CSOM et Azure)

Transcription:

Avant-propos 1. À qui s adresse ce livre? 13 2. Comment cet ouvrage est-il structuré? 15 Premiers pas avec Zend 1. Objectif 19 2. Quoi de neuf chez Zend? 20 2.1 Zend Framework 2 20 2.2 Les nouveaux composants de Zend Framework 2 21 2.3 Packaging 22 2.4 Zend Framework est maintenant sur GitHub 22 2.5 Une nouvelle approche Mobile First pour Zend Studio 23 3. Installer Zend Server 23 3.1 Présentation 23 3.2 Installation 24 3.3 Configuration du fuseau horaire 36 4. Configurer Zend Server pour le déploiement d'applications 37 5. Installer Composer 39 5.1 Présentation 39 5.2 Installation 40 6. Installer Git 44 6.1 Présentation 44 6.2 Installation de Git pour Windows 44 6.3 Créer une paire de clés SSH privée/publique 50 1/13

7. Installer Zend Studio 51 7.1 Présentation 51 7.2 Installation 52 8. Créer une première application mobile avec Zend Studio 58 9. Comprendre la structure d'un projet d'api RESTful 65 9.1 Vue d'ensemble 65 9.2 Le répertoire public 65 9.2.1 Le fichier.htaccess 65 9.2.2 Le fichier index.php 66 9.3 Le répertoire config 67 9.3.1 Le fichier application.config.php 67 9.3.2 Le fichier gateway.global.php 68 9.3.3 Le fichier gateway.xml 68 9.4 Le répertoire src 69 9.4.1 Le fichier RestCustomerController.php 70 9.4.2 Le fichier CustomerRepository.php 72 9.5 Le répertoire data 74 9.6 Le répertoire scripts 75 9.7 Le répertoire vendor 75 9.8 Le fichier deployment.xml 75 9.9 Installer Zend Framework 2 avec Composer 78 9.10 Autoloading des classes avec Composer 80 9.11 Déployer le projet d'api RESTful 82 9.12 Tester le projet d'api RESTful 83 10. Comprendre la structure d'un projet d'application mobile 85 10.1 Vue d'ensemble 85 10.2 Le fichier mobile.appgui 85 10.3 Le fichier index.html 86 10.4 Le répertoire js 88 10.5 Le répertoire style 88 10.6 Le fichier config.xml 88 2/13

10.7 Tester le projet d'application mobile 89 11. Rester attentif à l'utilisateur avec le design UX 90 12. Conclusion 91 Architecture orientée par le domaine 1. Objectif 95 2. Comprendre les stratégies de modélisation du modèle de domaine 96 2.1 Pattern et antipattern 96 2.2 Antipattern : le modèle de domaine anémique 96 2.3 Le pattern Domain Model 97 3. L'approche DDD et le langage ubiquitaire 98 4. Architecture orientée par le domaine 99 4.1 Vue d'ensemble 99 4.2 La couche de domaine 100 4.3 La couche de persistance des données 101 4.4 La couche d'api web 101 5. Valider les données 102 5.1 Position du problème 102 5.2 Quand valider les données? 102 5.3 Où valider les données? 102 5.4 Comment valider les données? 102 6. Implémenter le squelette de l'application mobile de gestion des tâches 103 7. Mettre en pratique le pattern Domain Model 107 3/13

7.1 Diagramme de classes 107 7.2 Définition des agrégats 108 8. Mettre en pratique le pattern Value Object 110 8.1 Objectif 110 8.2 Implémentation de la classe abstraite ValueObject 110 8.3 Implémentation de la classe Period 111 8.4 Implémentation de la classe Credential 113 8.5 Implémentation de la classe Keys 115 9. Mettre en pratique le pattern Entity 117 9.1 Objectif 117 9.2 Implémentation de la classe abstraite Entity 117 9.3 Implémentation de l'entité Comment 120 10. Mettre en pratique le pattern Aggregate 122 10.1 Objectif 122 10.2 Implémentation de l'agrégat User 122 10.3 Implémentation de l'agrégat Category 126 10.4 Implémentation de l'agrégat Task 129 11. Mettre en pratique la validation des données 136 11.1 Objectif 136 11.2 Création de l'interface ValidatableObjectInterface 136 11.3 Les composants Zend\InputFilter et Zend\Validator 137 11.4 Implémentation de la validation sur l'agrégat Task 140 11.5 Implémentation de la validation sur l'agrégat Category 148 11.6 Implémentation de la validation sur l'agrégat User 153 12. Comprendre la notion de contrat d'interface 158 12.1 Objectif 158 12.2 Implémentation de l'interface CategoryRepositoryInterface 159 12.3 Implémentation de l'interface TaskRepositoryInterface 160 12.4 Implémentation de l'interface UserRepositoryInterface 161 4/13

13. Bonnes pratiques pour un modèle de domaine robuste 163 13.1 Les frameworks de tests unitaires pour PHP 163 13.2 Le Test Driven Development 163 13.3 Préparation du projet pour les tests unitaires 165 13.4 Tests unitaires sur l'entité Category 172 13.5 Tests unitaires sur l'objet-valeur Period 177 13.6 Tests unitaires sur l'agrégat Task 179 14. Conclusion 186 Persistance des données 1. Objectif 189 2. La révolution du NoSQL 190 3. Initiation à MongoDB 191 3.1 Généralités 191 3.2 Structure d'un document 191 3.3 Document embarqué 192 3.4 Références 192 3.5 Bonne pratique : document embarqué ou référence? 194 3.6 Requêtage des données 194 4. Installer MongoDB 195 4.1 Installation de base 195 4.2 Installation comme service Windows 201 5. Construire des requêtes dans MongoDB 206 5.1 Insertion de données 206 5.2 Sélection de données 207 5.3 Sélecteur de requête 207 5/13

5.4 Mise à jour de données 210 5.5 Suppression de données 211 6. Activer l'extension PHP pour MongoDB 211 7. Stratégies d'accès aux bases de données NoSQL 216 7.1 Vue d'ensemble 216 7.2 Présentation de Doctrine 217 7.3 Installation de Doctrine MongoDB ODM Module 217 8. Modéliser la structure des données persistantes 226 8.1 Structure des données d'un utilisateur 226 8.2 Structure des données d'une catégorie 227 8.3 Structure des données d'une tâche 228 9. Mapper les entités du domaine avec Doctrine 229 9.1 Principe du mapping 229 9.2 Mapping de l'entité de base Entity 229 9.3 Mapping de l'entité Comment 232 9.4 Mapping de l'objet-valeur Period 233 9.5 Mapping de l'objet-valeur Credential 235 9.6 Mapping de l'objet-valeur Keys 236 9.7 Mapping de l'agrégat User 237 9.8 Mapping de l'agrégat Category 238 9.9 Mapping de l'agrégat Task 241 10. Accéder aux données avec le pattern Repository 246 10.1 Principe du motif de conception Repository 246 10.2 Création de la classe CategoryRepository 247 10.3 Création de la classe TaskRepository 249 10.4 Création de la classe UserRepository 251 10.5 Tests unitaires 253 11. Conclusion 253 6/13

Créer des services web RESTful avec Zend Studio 1. Objectif 257 2. Principe des API RESTful 258 3. Principe des API RPC 259 4. Le composant Zend Server Gateway 260 4.1 Vue d'ensemble 260 5. Gérer les codes de retour HTTP 262 6. Injection de dépendances 263 6.1 Principe 263 6.2 Injection de dépendances avec le composant Zend\ServiceManager 264 6.3 Mise en pratique de l'injection de dépendances 265 7. Implémenter l'api de manipulation des utilisateurs 267 7.1 Création du contrôleur de gestion des utilisateurs 267 7.2 Enregistrer l'utilisateur 270 7.3 Authentifier l'utilisateur 271 7.4 Résumé 274 8. Implémenter l'api de manipulation des catégories 276 8.1 Création du contrôleur d'api de gestion des catégories 276 8.2 Ajouter une nouvelle catégorie 279 8.3 Mettre à jour une catégorie 281 8.4 Lister les catégories 282 8.5 Sélectionner une catégorie 283 8.6 Supprimer une catégorie 285 8.7 Résumé 286 7/13

9. Implémenter l'api de manipulation des commentaires 292 9.1 Création du contrôleur d'api de gestion des commentaires 292 9.2 Ajouter un commentaire 296 9.3 Mettre à jour un commentaire 298 9.4 Lister les commentaires 300 9.5 Sélectionner un commentaire 301 9.6 Supprimer un commentaire 303 9.7 Résumé 304 10. Implémenter l'api de manipulation des tâches 312 10.1 Création du contrôleur d'api de gestion des tâches 312 10.2 Ajouter une nouvelle tâche 316 10.3 Mettre à jour une tâche 318 10.4 Lister les tâches 319 10.5 Sélectionner une tâche 320 10.6 Supprimer une tâche 322 10.7 Résumé 323 11. Sécuriser une API RESTful 330 11.1 Authentification des API 330 11.2 Implémenter l'authentification 330 11.3 Désactiver l authentification de l API de gestion des utilisateurs 334 12. Conclusion 335 Démarrer avec jquery Mobile 1. Objectif 339 2. Introduction à jquery Mobile 339 2.1 Anatomie d'une page avec jquery Mobile 340 2.2 Utilisation des balises sémantiques HTML5 343 8/13

2.3 Le composant Dialog 344 2.4 Les templates multipages 346 2.5 Le composant Navbar 348 2.6 Le composant Button 350 2.7 Le composant Listview 353 2.8 Les éléments de formulaire 355 2.9 Les thèmes 361 3. Comprendre le principe du Responsive Web Design 363 4. Les composants au rendu adaptatif dans jquery Mobile 363 4.1 Présentation 363 4.2 Le composant Table en mode Reflow 364 4.3 Le composant Table et le mode Column Toggle 367 5. Développer des templates côté client avec Underscore 369 5.1 Principe du templating 369 6. Mise en pratique du templating avec Underscore 372 6.1 Objectif 372 6.2 Préparation du dossier des templates 373 6.3 Implémentation du template de listage des catégories 373 6.4 Implémentation du template de création d'une catégorie 374 6.5 Implémentation du template d'édition d'une catégorie 375 6.6 Implémentation du template de vue de détail d'une catégorie 375 6.7 Implémentation du template de listage des tâches 376 6.8 Implémentation du template de création d'une tâche 377 6.9 Implémentation du template d'édition d'une tâche 378 6.10 Implémentation du template de vue de détail d'une tâche 379 6.11 Implémentation du template de création d un commentaire 380 6.12 Implémentation du template d'édition d'un commentaire 380 7. Résumé 381 9/13

JavaScript avancé 1. Architecture SPA avec Backbone.js 385 1.1 Qu'est-ce qu'une SPA? 385 1.2 Présentation de Backbone.js 385 2. Les modèles Backbone 386 2.1 Qu'est-ce qu'un modèle? 386 2.2 Accéder à l'identité d'un modèle 387 2.3 Instancier un modèle 389 2.4 Accéder aux données d'un modèle 389 2.5 Gérer les événements du modèle 391 2.6 Valider les données des modèles 394 3. Les collections Backbone 397 3.1 Qu'est-ce qu'une collection? 397 3.2 Instancier une collection 397 3.3 Manipuler les éléments d'une collection 398 3.4 Trier les éléments d'une collection 399 3.5 Parcourir les éléments d'une collection 401 3.6 Gérer les événements d'une collection 402 4. Les vues Backbone 408 4.1 Qu'est-ce qu'une vue? 408 4.2 La propriété el 408 4.3 Instancier une vue 408 5. Le routeur Backbone 415 5.1 Qu'est-ce qu'un routeur? 415 5.2 Configurer les règles de routage 418 6. Implémenter le squelette d'une application JavaScript 420 7. Interagir avec le serveur 421 10/13

7.1 Principe 421 7.2 Sélectionner les données du modèle 421 7.3 Créer ou mettre à jour un modèle 422 7.4 Supprimer un modèle 423 8. Authentification des applications JavaScript 424 9. Structurer le code JavaScript en modules 424 9.1 Objectif des modules 424 9.2 Comprendre les modules AMD 424 9.3 Présentation de RequireJS 426 10. Modulariser les modèles Backbone 427 10.1 Implémentation du modèle CategoryModel 427 10.2 Implémentation du modèle UserModel 428 10.3 Implémentation du modèle CommentModel 430 10.4 Implémentation du modèle TaskModel 431 11. Modulariser les collections Backbone 432 11.1 Implémentation de la collection CategoriesCollection 432 11.2 Implémentation de la collection UsersCollection 433 11.3 Implémentation du modèle TasksCollection 433 12. Modulariser les vues Backbone 434 12.1 Implémentation de la vue CategoriesListView 434 12.2 Implémentation de la vue CategoryCreateView 435 12.3 Implémentation de la vue CategoryEditView 436 12.4 Implémentation de la vue CategoryDetailView 438 12.5 Implémentation de la vue TasksListView 438 12.6 Implémentation de la vue TaskCreateView 440 12.7 Implémentation de la vue TaskEditView 442 12.8 Implémentation de la vue TaskDetailView 444 12.9 Implémentation de la vue CommentCreateView 446 12.10 Implémentation de la vue CommentEditView 447 11/13

12.11 Implémentation de la vue UserLoginView 449 12.12 Implémentation de la vue UserRegisterView 450 13. Conclusion 452 Développer dans le Cloud pour le Cloud 1. Objectif 455 2. Premier pas avec le Cloud 456 2.1 Origine du Cloud Computing 456 2.2 Le développement basé sur le Cloud 456 3. Installer Zend Server dans le Cloud OpenShift 457 3.1 Présentation d'openshift 457 3.2 Création d'un compte sur OpenShift 457 3.3 Installation de Zend Server pour OpenShift 462 3.4 Configuration de Zend Server 466 4. Installer MongoDB dans le Cloud OpenShift 470 5. Créer une cible de déploiement vers Zend Server pour OpenShift 476 5.1 Création d'un nouveau projet d API depuis Git 480 5.2 Déployer le projet d API sur OpenShift depuis Zend Studio 485 6. Conclusion 487 Index 489 12/13

13/13