Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr Saisissez la référence ENI de l'ouvrage EISYM dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le lien de téléchargement.

Avant-propos 1. Introduction...... 11 2. À qui s'adresse ce livre ? ...... 13 3. Objectifs du livre ...... 14 3.1 Ce que vous allez apprendre ...... 14 3.2 Pourquoi parler de CodeIgniter et ? ...... 15 3.3 Symfony et CodeIgniter ...... 16 3.4 Les pré-requis ...... 16 3.4.1 Pour Symfony ...... 16 3.4.2 Pour CodeIgniter ...... 17

Chapitre 1 Présentation du framework Symfony 1. Présentation ...... 19 2. Les projets ...... 21 3. Les applications ...... 22 4. Les environnements ...... 22 5. Les "helpers" ...... 23 6. Les fichiers de configuration ...... 24 2 Symfony et CodeIgniter Le développement rapide d'applications web en PHP

Chapitre 2 Installer le framework Symfony 1. Installer les sources de Symfony ...... 25 2. Générer un projet ...... 29 3. Configurer le serveur et les hôtes virtuels ...... 35 4. Comprendre l'architecture d'un projet...... 38 5. Créer une application ...... 39

Chapitre 3 Travailler avec les vues 1. Les vues ...... 43 1.1 Les templates ...... 45 1.2 Les layouts ...... 49 1.3 Les modules ...... 53 1.3.1 Travailler avec un module vierge ...... 55 1.3.2 Passer des paramètres...... 56 2. Utiliser les sessions...... 62

Chapitre 4 Comprendre le format YAML 1. Qu'est-ce que YAML ? ...... 65 2. Ce qu'il faut savoir sur YAML ...... 66 3. Les données scalaires ...... 67 3.1 Les chaînes de caractères ...... 67 3.2 Les entiers ...... 68 3.3 Les décimaux...... 68 3.4 Les exponentiels ...... 68 3.5 Les hexadécimaux ...... 69 3.6 Les octaux...... 69 Table des matières 3

3.7 Les valeurs nulles ...... 69 3.8 Les valeurs booléennes...... 69 3.9 Les dates ...... 69 4. Les collections ...... 70 4.1 Les séquences ...... 70 4.2 Les associations ...... 70

Chapitre 5 Travailler avec les modèles 1. Le modèle dans Symfony ...... 75 2. Doctrine et Propel ...... 76 3. Configurer une base de données ...... 76 4. Le fichier schema.yml ...... 78 5. Charger un jeu de données ...... 80 6. Les formulaires générés...... 81

Chapitre 6 Utiliser le générateur d'admin 1. Le "backend" ...... 87 2. Créer une application ...... 88 3. Générer une interface d'administration ...... 88 3.1 Description ...... 89 3.2 Détail d'une interface générée ...... 90 4. Authentification...... 96 4.1 Gestion des droits ...... 96 4.2 Personnaliser la page de connexion ...... 99 4.3 Tester si un utilisateur est connecté ...... 99 4 Symfony et CodeIgniter Le développement rapide d'applications web en PHP

Chapitre 7 Comprendre le routage 1. Les URL (Uniform Ressource Locator) ...... 105 2. Les méthodes HTTP ...... 106 3. Le fichier routing.yml ...... 106 4. La collection de routes Doctrine ...... 111

Chapitre 8 Mettre en pratique Symfony 1. Le projet "Mondevis"...... 113 1.1 Présentation ...... 113 1.2 Les fonctionnalités ...... 116 1.3 Le MCD (Modèle Conceptuel des Données) ...... 117 1.4 S'aider du logiciel DBDesigner ...... 118 2. Créer le projet...... 121 2.1 Créer les applications ...... 122 3. Modifier le routage ...... 126 4. Modifier les vues ...... 127 4.1 Modifier les layouts...... 127 4.2 Modifier les templates ...... 128 5. Ajouter une interface d'administration ...... 131 6. Conclusion ...... 133

Chapitre 9 Aller plus loin avec les formulaires 1. Les classes sfForm et sfWidget ...... 135 1.1 Les champs INPUT ...... 138 1.2 Les labels...... 139 1.3 Ajouter des attributs ...... 140 Table des matières 5

1.4 Les valeurs par défaut ...... 140 1.5 Rediriger un internaute ...... 141 2. La validation des saisies ...... 141 2.1 Présentation ...... 141 2.2 La classe sfValidatorBase ...... 142 2.3 Les types de validation ...... 142 2.4 Personnaliser les messages d'erreur...... 144 2.5 Le téléchargement de fichiers...... 145

Chapitre 10 Utiliser l'internationalisation dans Symfony 1. Qu'est-ce que l'internationalisation ? ...... 147 2. Qu'est-ce que la localisation ? ...... 147 3. La culture de l'utilisateur ...... 148 3.1 Présentation ...... 148 3.2 Gérer les cultures...... 148 4. La culture dans les URL ...... 150 4.1 Présentation ...... 150 4.2 Exemples...... 151 5. Gérer l'encodage ...... 152 6. Traduction ...... 153 6.1 Présentation ...... 153 6.2 Le helper __() ...... 154 7. Traduction avec Doctrine ...... 157 6 Symfony et CodeIgniter Le développement rapide d'applications web en PHP

Chapitre 11 Gérer le cache dans Symfony 1. Qu'est-ce que le cache ? ...... 161 2. Configuration ...... 161 3. Activer le cache ...... 162 4. Nettoyer le cache ...... 162 5. Le cache des formulaires ...... 165

Chapitre 12 Effectuer des tests unitaires 1. Définition des tests unitaires ...... 167 2. Le framework lime ...... 168 3. Création du contexte de tests ...... 170 4. Tester une méthode ...... 172 5. Compléments sur les tests unitaires ...... 174 5.1 Tester l’application complète...... 174 5.2 Couverture de code ...... 174

Chapitre 13 Effectuer des tests fonctionnels 1. Que sont les tests fonctionnels ? ...... 177 2. L'objet sfBrowser ...... 178 3. L’objet sfTestFunctional ...... 179 4. Utiliser le chaînage ...... 180 5. Le testeur SfTesterRequest ...... 181 6. Le testeur SfTesterResponse ...... 181 7. Utiliser un jeu de tests ...... 183 Table des matières 7

8. Réaliser un test...... 186 9. Conclusion ...... 188

Chapitre 14 Présentation du framework CodeIgniter 1. Présentation ...... 191 2. Installer CodeIgniter...... 195 3. Le fichier config. ...... 196 4. Le fichier route.php ...... 198 5. Le fichier autoload.php ...... 201 6. Le fichier database.php ...... 204

Chapitre 15 Travailler avec un contrôleur et des vues 1. Créer un contrôleur ...... 207 2. Le contrôleur dans l'URL ...... 209 3. Créer une vue ...... 212 4. Afficher une vue ...... 213 5. Passer des paramètres dans une vue ...... 215

Chapitre 16 Travailler avec des modèles 1. Créer un modèle ...... 225 2. Utiliser un modèle pour une table...... 227 3. Utiliser un modèle dans un contrôleur ...... 230 4. Créer des méthodes pour retrouver des données ...... 231 5. Créer des méthodes pour ajouter des données...... 232 8 Symfony et CodeIgniter Le développement rapide d'applications web en PHP

6. Créer des méthodes pour modifier et supprimer des données ....234 7. Gérer les transactions ...... 235 8. Contrôleurs, modèles et vues ...... 236

Chapitre 17 Travailler avec les URI 1. Présentation ...... 239 2. Les segments ...... 239 3. Les méthodes de la classe URI ...... 240

Chapitre 18 Mise en pratique avec une table des compositeurs 1. Introduction ...... 245 2. Objectif ...... 245 3. La base de données ...... 246 4. Mise en place de l'exemple ...... 246 4.1 Créer un modèle ...... 246 4.2 Créer des vues ...... 248 4.3 Le contrôleur ...... 250

Chapitre 19 Travailler avec les sessions 1. La classe Session ...... 257 2. Retrouver les données d'une session ...... 258 3. Réaliser des opérations sur les sessions ...... 258 4. Sécuriser des sessions ...... 259 5. Les "FlashData" ...... 261 Table des matières 9

6. L'exemple d'un panier virtuel ...... 262

Chapitre 20 Réaliser des tests unitaires 1. Présentation ...... 271 2. Réaliser les tests ...... 273 3. Générer un rapport ...... 279

Chapitre 21 Un cas pratique : la gestion de fichiers 1. Présentation ...... 281 2. La base de données ...... 287 3. Utiliser des bibliothèques ...... 289 4. Les contrôleurs ...... 292 5. Les modèles ...... 296 6. Se connecter et se déconnecter ...... 297 7. Mot de passe perdu ...... 300 8. Conclusion ...... 302

Index ...... 305