Zend Framework 2
Transcription
Zend Framework 2
Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 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 2.2 Les nouveaux composants de Zend Framework 2 2.3 Packaging 2.4 Zend Framework est maintenant sur GitHub 2.5 Une nouvelle approche Mobile First pour Zend Studio 3. Installer Zend Server 20 21 22 22 23 23 3.1 Présentation 3.2 Installation 3.3 Configuration du fuseau horaire 23 24 36 4. Configurer Zend Server pour le déploiement d'applications 37 5. Installer Composer 39 5.1 Présentation 5.2 Installation 39 40 6. Installer Git 44 6.1 Présentation 6.2 Installation de Git pour Windows 6.3 Créer une paire de clés SSH privée/publique www.editions-eni.fr © Editions ENI 44 44 50 1/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 7. Installer Zend Studio 51 7.1 Présentation 7.2 Installation 51 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 9.2 Le répertoire public 9.2.1 Le fichier .htaccess 9.2.2 Le fichier index.php 9.3 Le répertoire config 9.3.1 Le fichier application.config.php 9.3.2 Le fichier gateway.global.php 9.3.3 Le fichier gateway.xml 9.4 Le répertoire src 9.4.1 Le fichier RestCustomerController.php 9.4.2 Le fichier CustomerRepository.php 9.5 Le répertoire data 9.6 Le répertoire scripts 9.7 Le répertoire vendor 9.8 Le fichier deployment.xml 9.9 Installer Zend Framework 2 avec Composer 9.10 Autoloading des classes avec Composer 9.11 Déployer le projet d'API RESTful 9.12 Tester le projet d'API RESTful 10. Comprendre la structure d'un projet d'application mobile 10.1 Vue d'ensemble 10.2 Le fichier mobile.appGUI 10.3 Le fichier index.html 10.4 Le répertoire js 10.5 Le répertoire style 10.6 Le fichier config.xml www.editions-eni.fr 65 65 65 66 67 67 68 68 69 70 72 74 75 75 75 78 80 82 83 85 85 85 86 88 88 88 © Editions ENI 2/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 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 2.2 Antipattern : le modèle de domaine anémique 2.3 Le pattern Domain Model 96 96 97 3. L'approche DDD et le langage ubiquitaire 98 4. Architecture orientée par le domaine 99 4.1 Vue d'ensemble 4.2 La couche de domaine 4.3 La couche de persistance des données 4.4 La couche d'API web 5. Valider les données 99 100 101 101 102 5.1 Position du problème 5.2 Quand valider les données ? 5.3 Où valider les données ? 5.4 Comment valider les données ? 102 102 102 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 www.editions-eni.fr © Editions ENI 3/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 7.1 Diagramme de classes 7.2 Définition des agrégats 107 108 8. Mettre en pratique le pattern Value Object 8.1 Objectif 8.2 Implémentation de la classe abstraite ValueObject 8.3 Implémentation de la classe Period 8.4 Implémentation de la classe Credential 8.5 Implémentation de la classe Keys 9. Mettre en pratique le pattern Entity 110 110 111 113 115 117 9.1 Objectif 9.2 Implémentation de la classe abstraite Entity 9.3 Implémentation de l'entité Comment 10. Mettre en pratique le pattern Aggregate 10.1 Objectif 10.2 Implémentation de l'agrégat User 10.3 Implémentation de l'agrégat Category 10.4 Implémentation de l'agrégat Task 11. Mettre en pratique la validation des données 11.1 Objectif 11.2 Création de l'interface ValidatableObjectInterface 11.3 Les composants Zend\InputFilter et Zend\Validator 11.4 Implémentation de la validation sur l'agrégat Task 11.5 Implémentation de la validation sur l'agrégat Category 11.6 Implémentation de la validation sur l'agrégat User 12. Comprendre la notion de contrat d'interface 12.1 Objectif 12.2 Implémentation de l'interface CategoryRepositoryInterface 12.3 Implémentation de l'interface TaskRepositoryInterface 12.4 Implémentation de l'interface UserRepositoryInterface www.editions-eni.fr 110 © Editions ENI 117 117 120 122 122 122 126 129 136 136 136 137 140 148 153 158 158 159 160 161 4/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 13. Bonnes pratiques pour un modèle de domaine robuste 163 13.1 Les frameworks de tests unitaires pour PHP 13.2 Le Test Driven Development 13.3 Préparation du projet pour les tests unitaires 13.4 Tests unitaires sur l'entité Category 13.5 Tests unitaires sur l'objet-valeur Period 13.6 Tests unitaires sur l'agrégat Task 163 163 165 172 177 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 3.2 Structure d'un document 3.3 Document embarqué 3.4 Références 3.5 Bonne pratique : document embarqué ou référence ? 3.6 Requêtage des données 4. Installer MongoDB 195 4.1 Installation de base 4.2 Installation comme service Windows 5. Construire des requêtes dans MongoDB 5.1 Insertion de données 5.2 Sélection de données 5.3 Sélecteur de requête www.editions-eni.fr 191 191 192 192 194 194 195 201 206 206 207 207 © Editions ENI 5/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 5.4 Mise à jour de données 5.5 Suppression de données 210 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 7.2 Présentation de Doctrine 7.3 Installation de Doctrine MongoDB ODM Module 216 217 217 8. Modéliser la structure des données persistantes 226 8.1 Structure des données d'un utilisateur 8.2 Structure des données d'une catégorie 8.3 Structure des données d'une tâche 226 227 228 9. Mapper les entités du domaine avec Doctrine 9.1 Principe du mapping 9.2 Mapping de l'entité de base Entity 9.3 Mapping de l'entité Comment 9.4 Mapping de l'objet-valeur Period 9.5 Mapping de l'objet-valeur Credential 9.6 Mapping de l'objet-valeur Keys 9.7 Mapping de l'agrégat User 9.8 Mapping de l'agrégat Category 9.9 Mapping de l'agrégat Task 10. Accéder aux données avec le pattern Repository 10.1 Principe du motif de conception Repository 10.2 Création de la classe CategoryRepository 10.3 Création de la classe TaskRepository 10.4 Création de la classe UserRepository 10.5 Tests unitaires 11. Conclusion www.editions-eni.fr 229 229 229 232 233 235 236 237 238 241 246 246 247 249 251 253 253 © Editions ENI 6/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 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 6.2 Injection de dépendances avec le composant Zend\ServiceManager 6.3 Mise en pratique de l'injection de dépendances 7. Implémenter l'API de manipulation des utilisateurs 7.1 Création du contrôleur de gestion des utilisateurs 7.2 Enregistrer l'utilisateur 7.3 Authentifier l'utilisateur 7.4 Résumé 8. Implémenter l'API de manipulation des catégories 8.1 Création du contrôleur d'API de gestion des catégories 8.2 Ajouter une nouvelle catégorie 8.3 Mettre à jour une catégorie 8.4 Lister les catégories 8.5 Sélectionner une catégorie 8.6 Supprimer une catégorie 8.7 Résumé www.editions-eni.fr © Editions ENI 263 264 265 267 267 270 271 274 276 276 279 281 282 283 285 286 7/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 9. Implémenter l'API de manipulation des commentaires 9.1 Création du contrôleur d'API de gestion des commentaires 9.2 Ajouter un commentaire 9.3 Mettre à jour un commentaire 9.4 Lister les commentaires 9.5 Sélectionner un commentaire 9.6 Supprimer un commentaire 9.7 Résumé 10. Implémenter l'API de manipulation des tâches 10.1 Création du contrôleur d'API de gestion des tâches 10.2 Ajouter une nouvelle tâche 10.3 Mettre à jour une tâche 10.4 Lister les tâches 10.5 Sélectionner une tâche 10.6 Supprimer une tâche 10.7 Résumé 11. Sécuriser une API RESTful 292 292 296 298 300 301 303 304 312 312 316 318 319 320 322 323 330 11.1 Authentification des API 11.2 Implémenter l'authentification 11.3 Désactiver l’authentification de l’API de gestion des utilisateurs 12. Conclusion 330 330 334 335 Démarrer avec jQuery Mobile 1. Objectif 339 2. Introduction à jQuery Mobile 339 2.1 Anatomie d'une page avec jQuery Mobile 2.2 Utilisation des balises sémantiques HTML5 www.editions-eni.fr © Editions ENI 340 343 8/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 2.3 Le composant Dialog 2.4 Les templates multipages 2.5 Le composant Navbar 2.6 Le composant Button 2.7 Le composant Listview 2.8 Les éléments de formulaire 2.9 Les thèmes 344 346 348 350 353 355 361 3. Comprendre le principe du Responsive Web Design 363 4. Les composants au rendu adaptatif dans jQuery Mobile 363 4.1 Présentation 4.2 Le composant Table en mode Reflow 4.3 Le composant Table et le mode Column Toggle 5. Développer des templates côté client avec Underscore 5.1 Principe du templating 369 369 6. Mise en pratique du templating avec Underscore 6.1 Objectif 6.2 Préparation du dossier des templates 6.3 Implémentation du template de listage des catégories 6.4 Implémentation du template de création d'une catégorie 6.5 Implémentation du template d'édition d'une catégorie 6.6 Implémentation du template de vue de détail d'une catégorie 6.7 Implémentation du template de listage des tâches 6.8 Implémentation du template de création d'une tâche 6.9 Implémentation du template d'édition d'une tâche 6.10 Implémentation du template de vue de détail d'une tâche 6.11 Implémentation du template de création d’un commentaire 6.12 Implémentation du template d'édition d'un commentaire 7. Résumé www.editions-eni.fr 363 364 367 372 372 373 373 374 375 375 376 377 378 379 380 380 381 © Editions ENI 9/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) JavaScript avancé 1. Architecture SPA avec Backbone.js 385 1.1 Qu'est-ce qu'une SPA ? 1.2 Présentation de Backbone.js 385 385 2. Les modèles Backbone 386 2.1 Qu'est-ce qu'un modèle ? 2.2 Accéder à l'identité d'un modèle 2.3 Instancier un modèle 2.4 Accéder aux données d'un modèle 2.5 Gérer les événements du modèle 2.6 Valider les données des modèles 3. Les collections Backbone 386 387 389 389 391 394 397 3.1 Qu'est-ce qu'une collection ? 3.2 Instancier une collection 3.3 Manipuler les éléments d'une collection 3.4 Trier les éléments d'une collection 3.5 Parcourir les éléments d'une collection 3.6 Gérer les événements d'une collection 4. Les vues Backbone 397 397 398 399 401 402 408 4.1 Qu'est-ce qu'une vue ? 4.2 La propriété el 4.3 Instancier une vue 408 408 408 5. Le routeur Backbone 415 5.1 Qu'est-ce qu'un routeur ? 5.2 Configurer les règles de routage 415 418 6. Implémenter le squelette d'une application JavaScript 420 7. Interagir avec le serveur 421 www.editions-eni.fr © Editions ENI 10/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 7.1 Principe 7.2 Sélectionner les données du modèle 7.3 Créer ou mettre à jour un modèle 7.4 Supprimer un modèle 421 421 422 423 8. Authentification des applications JavaScript 424 9. Structurer le code JavaScript en modules 424 9.1 Objectif des modules 9.2 Comprendre les modules AMD 9.3 Présentation de RequireJS 424 424 426 10. Modulariser les modèles Backbone 427 10.1 Implémentation du modèle CategoryModel 10.2 Implémentation du modèle UserModel 10.3 Implémentation du modèle CommentModel 10.4 Implémentation du modèle TaskModel 11. Modulariser les collections Backbone 11.1 Implémentation de la collection CategoriesCollection 11.2 Implémentation de la collection UsersCollection 11.3 Implémentation du modèle TasksCollection 12. Modulariser les vues Backbone 432 432 433 433 434 12.1 Implémentation de la vue CategoriesListView 12.2 Implémentation de la vue CategoryCreateView 12.3 Implémentation de la vue CategoryEditView 12.4 Implémentation de la vue CategoryDetailView 12.5 Implémentation de la vue TasksListView 12.6 Implémentation de la vue TaskCreateView 12.7 Implémentation de la vue TaskEditView 12.8 Implémentation de la vue TaskDetailView 12.9 Implémentation de la vue CommentCreateView 12.10 Implémentation de la vue CommentEditView 12.11 Implémentation de la vue UserLoginView www.editions-eni.fr 427 428 430 431 © Editions ENI 434 435 436 438 438 440 442 444 446 447 449 11/12 Zend Framework 2 Développez des applications web mobiles (PHP, HTML5, JavaScript, NoSQL) 12.12 Implémentation de la vue UserRegisterView 13. Conclusion 450 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 2.2 Le développement basé sur le Cloud 3. Installer Zend Server dans le Cloud OpenShift 3.1 Présentation d'OpenShift 3.2 Création d'un compte sur OpenShift 3.3 Installation de Zend Server pour OpenShift 3.4 Configuration de Zend Server 456 456 457 457 457 462 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 5.2 Déployer le projet d’API sur OpenShift depuis Zend Studio 480 485 6. Conclusion 487 Index 489 www.editions-eni.fr © Editions ENI 12/12