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