Development

Documentation/fr_FR/book/1.0/01-Introducing-Symfony (diff)

You must first sign up to be able to contribute.

Changes between Version 4 and Version 5 of Documentation/fr_FR/book/1.0/01-Introducing-Symfony

Show
Ignore:
Author:
Geoff (IP: 88.191.40.240)
Timestamp:
07/24/07 17:48:06 (10 years ago)
Comment:

Mise à disposition du Ch1 (Relecture)

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/fr_FR/book/1.0/01-Introducing-Symfony

    v4 v5  
    1212</div> 
    1313}}} 
     14 
     15{{{ 
     16#!WikiMarkdown 
     17 
     18Chapitre 1 - Introduction à Symfony 
     19=================================== 
     20 
     21En quoi Symfony peut-il vous aider dans vos projets ? De quoi a-t'il besoin pour fonctionner ? C'est ce que nous allons voir dans ce chapitre. 
     22 
     23# Symfony en bref # 
     24 
     25Lors de la création d'applications, utiliser un framework (cadre de développement) améliore le développement en automatisant certaines tâches récurrentes . 
     26En apportant une structure, un framework guide le développeur lors de l'écriture. Il l'aide à produire un code plus propre, plus efficace et plus facile à maintenir. De plus, les opérations complexes s'y retrouvent découpées en processus simples et organisés. Le développement s'en trouve facilité. 
     27 
     28Symfony est un framework complet, configuré pour accélérer le développement d'applications web grâce à plusieurs fonctionnalités décisives. 
     29La première est sa structure même, qui guide les débutants en séparant distinctement les traitements liés au modèle fonctionnel, de ceux qui sont du ressort de la présentation ou de la logique serveur. Ensuite, il propose au développeur de nombreuses classes et de nombreux outils qui assistent et accélèrent la création d'une application web complexe. Il automatise ainsi les tâches les plus courantes, permettant au développeur de se concentrer sur les spécificités de l'application. 
     30Au final, le bénéfice apporté est tout simplement qu'on ne réinvente plus la roue à chaque nouvelle application développée ! 
     31 
     32Symfony a été entièrement codé en PHP5. Il a été intensivement testé sur de nombreux sites en production comme des sites d'e-commerce à très fort trafic. Symfony est compatible avec la majorité des moteurs de base de données comme MySQL, PostgreSQL, Oracle ou Microsoft SQL Server. Il fonctionne aussi bien sur les plates-formes Windows que *nix. 
     33Voyons de plus près quelles sont ses fonctionnalités. 
     34 
     35## Les fonctionnalités de Symfony ## 
     36Symfony a été conçu pour répondre aux besoins suivants : 
     37 
     38 * Facilité d'installation et de configuration sur la plupart des plates-formes (et fonctionnement garanti sur les plates-formes standards *nix et Windows) 
     39 * Indépendance vis-à-vis des moteurs de base de données 
     40 * Simplicité dans l'utilisation pour la plupart des cas, mais également suffisamment de flexibilité pour s'adapter aux cas complexes 
     41 * Une utilisation basée sur le principe de la convention plutôt que sur la configuration : les développeurs ne s'occupent que de ce qui sort de l'ordinaire. Le reste est géré par Symfony 
     42 * Compatibilité avec la plupart des motifs de conceptions et les bonnes méthodes de développement 
     43 * Paré pour l'entreprise : adaptabilité avec les standards et les architectures existants (IT), et une stabilité satisfaisante pour des projets à long terme 
     44 * Un code très lisible et commenté à l'aide de phpDocumentor, pour une maintenance facile 
     45 * Facilité d'extension permettant l'intégration avec d'autres bibliothèques commerciales 
     46 
     47### Génération automatique des fonctionnalités de vos projets Web ### 
     48La plupart des fonctionnalités communes aux projets web sont automatisées avec Symfony, comme par exemple : 
     49 
     50 * L'interface d'internationalisation qui permet la traduction des données et des interfaces, ainsi que la localisation du contenu. 
     51 * L'affichage utilise des gabarits et des mises en pages qui peuvent être construits par des graphistes ne connaissant pas le framework. Les raccourcis réduisent la quantité de code de présentation à écrire en en intégrant de grandes portions dans de simples appels de fonctions. 
     52 * Les formulaires s'occupent automatiquement de la validation et du réaffichage des données saisies, assurant ainsi l'intégrité des informations stockées dans la base de données ainsi qu'un plus grand confort d'utilisation. 
     53 * L'affichage est échappé, protégeant les applications des attaques par données corrompues (ex: XSS). 
     54 * Les fonctions de gestion de cache réduisent l'utilisation de bande passante et la charge serveur. 
     55 * L'authentification et la gestion de droits facilitent la gestion de la sécurité et la création de sections à accès restreint. 
     56 * Le routing et les URLs intelligentes font de l'adresse de la page un élément à part entière de l'interface compréhensible par un moteur de recherche. 
     57 * La fonction intégrée d'email et la composante de gestion de l'API permettent à vos applications d'êtres plus complètes qu'une simple page web. 
     58 * Les affichages de données rendus ergonomiques grâce à la pagination automatique, aux possibilités de tri et de filtrage des données. 
     59 * Les plugins, les extensions et les classes abstraites fournissent un haut degré d'extensibilité. 
     60 * Les actions Ajax sont simples à utiliser et ce grâce aux helpers encapsulant les effets Javascript. 
     61 
     62### Environnement de développement et Outils ### 
     63Pour répondre aux besoins des entreprises ayant leurs propres normes de codage et leur propres règles de gestion de projet, Symfony peut être entièrement configuré. Il fournit, par défaut, plusieurs environnements de développement et est livré avec de multiples outils permettant d'automatiser les tâches classiques en développement logiciel : 
     64 
     65 * Les outils de génération de code sont capables de générer une interface d'administration en seulement un clic. 
     66 * Les composantes intégrées de tests unitaires et fonctionnels facilitent la phase de recette du développement. 
     67 * Lorsqu'un développeur travaille sur une page, le panneau de débug facilite la correction des erreurs en lui affichant toutes les informations dont il a besoin. 
     68 * L'interface en ligne de commande automatise le déploiement d'applications entre deux serveurs. 
     69 * Les modifications de configuration à la volée sont possibles et efficaces. 
     70 * Les outils de logs fournissent aux administrateurs tous les détails de l'activité d'une application. 
     71 
     72## Qui a créé Symfony et Pourquoi ? ## 
     73La première version de Symfony a été publiée en octobre 2005 par le fondateur du projet Fabien Potencier, le co-auteur de ce livre. Fabien est le PDG de Sensio (http://www.sensio.com), une agence web française bien connue pour sa vision innovante en matière de développement web. 
     74 
     75En 2003, Fabien a passé du temps à étudier les outils de développement PHP open-source permettant la création d'application web. Il n'en a trouvé aucun répondant aux besoins décrits plus haut. Lorsque PHP 5 est sorti, il a alors décidé que les outils disponibles étaient devenus suffisamment matures pour être intégrés au sein d'un framework. Il a passé une année à écrire le cœur de Symfony, basant son travail sur le cœur du framework Mojavi (MVC), sur le moteur de correspondance objet-relation Propel (ORM) et sur le système de helpers des gabarits de Ruby on Rails. 
     76 
     77À l'origine, Symfony fut créé par Fabien pour les projets de Sensio car disposer d'un framework efficace est la meilleure méthode pour développer des applications rapidement et efficacement. Cela rend également le développement web plus intuitif et les applications produites plus robustes et plus faciles à maintenir. Le cadre de développement ayant fait ses preuves lors du développement d'un site e-commerce d'un vendeur de lingerie, il fut ensuite réutilisé pour d'autres projets. 
     78 
     79Après avoir utilisé Symfony avec succès sur plusieurs projets, Fabien a décidé de le publier sous une licence open source. Il l'a fait pour livrer son travail à la communauté, pour bénéficier des retours des utilisateurs, pour démontrer le savoir-faire de Sensio, mais aussi pour le fun. 
     80 
     81>**Note** 
     82>Pourquoi « Symfony » et non pas « !FooBarFramework » ?  Parce que Fabien voulait un nom court contenant un s (comme Sensio) et un f (comme framework), facile à retenir et qui ne soit pas associé à un autre outil de développement. Ajouté à celle qu'il n'aime pas les majuscules, Symfony correspondait alors bien (même si c'est du mauvais français) et était disponible comme nom de projet. L'autre alternative étant «baguette ». 
     83 
     84Pour que Symfony soit un projet open-source à succès, il avait besoin d'une documentation complète, en anglais, facilitant son adoption. Fabien a demandé à François Zaninotto - employé de Sensio et co-auteur de ce livre - de se pencher sur le code du projet et d'en tirer un livre en ligne. Cela ne s'est pas fait en un jour, mais lorsque le projet fut rendu public, il était suffisamment documenté pour attirer de nombreux développeurs. La suite c'est vous qui l'écrirez. 
     85 
     86## La communauté Symfony ## 
     87Dès le lancement du site de Symfony (http://www.symfony-project.com), de nombreux développeurs du monde entier ont téléchargé et essayé le framework, ont lu la documentation en ligne, construit leurs premières applications web avec Symfony et le buzz a commencé. 
     88 
     89Les framework ont gagné en popularité à ce moment-là et la demande en un framework PHP complet était importante. Symfony offrait une solution complète grâce à son code de grande qualité et à la documentation complète disponible : deux atouts majeurs par rapport aux autres acteurs de la scène des framework. Les contributeurs ont commencé à apparaître, proposant patchs et améliorations, validant la documentation, s'investissant dans toutes sortes de tâches nécessaires. 
     90 
     91Le dépôts publiques des fichiers source du projet et le système de ticket offrent différentes manières de contribuer et tous les volontaires sont les bienvenue. Fabien reste le gestionnaire et décideur principal du code source du projet, garantissant ainsi la qualité du code. 
     92 
     93Aujourd'hui, les forums Symfony, les listes mail et l'espace de discutions (IRC) offrent un support idéal aux utilisateurs, où l'on observe que chaque question reçoit une moyenne de quatre réponses. De nouveaux utilisateurs installent Symfony chaque jour, le wiki et les sections de dépôts de code hébergent un grand nombre de documentations rédigées par des volontaires. Chaque semaine, en moyenne cinq nouvelles applications déclarent utiliser Symfony et le décompte continue. 
     94 
     95La communauté Symfony est la troisième force du projet et nous espérons que vous nous rejoindrez après avoir lu ce livre. 
     96 
     97### Ai-je besoin de Symfony ? 
     98 
     99Que vous soyez un expert PHP5 ou un débutant, vous serez capable d’utiliser Symfony. Le facteur principal à prendre en compte est la taille de votre projet. 
     100 
     101Si vous n’avez besoin que de créer un simple site web possédant moins de dix pages, très peu d’accès à une base de données et pas d’obligations de performances ou de documentations, alors vous devriez vous contenter simplement du PHP. L’utilisation d’un framework et des concepts objet ou d’un modèle MVC ne ferait qu’alourdir le processus de développement. De plus il est à noter que Symfony n’est pas optimisé pour une utilisation sur un hébergement mutualisé où les scripts PHP peuvent seulement fonctionner en mode CGI. 
     102 
     103D’un autre coté, si vous développez des applications plus complexes avec une logique métier lourde, alors PHP seul n’est plus suffisant. Si vous prévoyez de maintenir ou améliorer votre application dans l’avenir, vous aurez besoin que votre code soit léger, compréhensible et optimisé. Si vous souhaitez profiter des dernières avancés technologiques (comme Ajax) simplement, sans écrire des centaines de lignes de JavaScript et enfin si vous souhaitez développer rapidement de façon ludique, alors PHP ne sera sûrement pas suffisant. C'est dans ces cas que Symfony devient indispensable. 
     104 
     105Et, bien sûr, si vous êtes un professionnel du développement web, vous êtes déjà au fait des bénéfices tirés de l’utilisation de framework. Il vous le faut mature, très documenté et soutenu par une importante communauté. Ne cherchez plus, Symfony est votre solution 
     106 
     107>**TIP** 
     108>Si vous ne croyez que vos yeux, rendez-vous sur le site de Symfony et profitez du screencast. Vous verrez à quel point il est facile et amusant de développer avec Symfony 
     109 
     110Concepts fondamentaux 
     111----------------------------- 
     112 
     113Avant de débuter vous devez être familier avec quelques concepts de bases. Passez cette partie si les termes OOP, ORM, RAD, DRY, KISS, TDD, YAML, et PEAR ne vous sont pas étrangers. 
     114 
     115### PHP 5 
     116 
     117Symfony est développé en PHP5 ([http://www.php.net/](http://www.php.net/)) et est prévu pour développer des applications grâce à ce langage. Cependant, une solide connaissance de PHP5 est nécessaire pour tirer le meilleur parti du framework. 
     118 
     119Les développeurs qui connaissent déjà PHP4 mais pas PHP5 devraient principalement se pencher sur la partir objet de celui-ci. 
     120 
     121### Programmation orientée objet ( POO ou OOP) 
     122 
     123La programmation orientée objet (POO) ne sera pas expliquée dans cet ouvrage. Il faut un livre rien que pour ça ! Mais parce que Symfony fait une utilisation intensive de ce concept disponible sous PHP5, sa connaissance est un pré-requis important pour l’apprentissage du framework 
     124 
     125Wikipédia définit  la POO comme suit : 
     126 
     127 
     128L’idée derrière la programmation orientée objet est qu’un programme peut-être vu comme le comportement d’une collection de différentes unités, ou comme des objets qui interagissent les uns sur les autres. Par opposition, la programmation traditionnelle pourrait être vue comme un ensemble de fonctions ou plus simplement comme une suite d’instructions. 
     129 
     130PHP5 met en œuvre les notions de classes, d’objets, de méthodes, d’héritage du concept d'orienté objet, et bien plus encore. Si vous n’êtes pas familiarisé avec ces notions, il est fortement conseillé d’en lire la partie dédiée de la documentation PHP, disponible à [http://www.php.net/manual/en/language.oop5.basic.php](http://www.php.net/manual/en/language.oop5.basic.php). 
     131 
     132### Les méthodes magiques 
     133 
     134Une des forces du comportement objet de PHP est l’utilisation des méthodes magiques. Ces méthodes peuvent être utilisées pour surclasser le comportement par défaut des classes sans en modifier le code. Elle rendent PHP moins bavard et plus extensible. Elles sont faciles à reconnaître puisque leur nom commence toujours avec un double caractère de soulignement  (`__`). 
     135Par exemple, implicitement, lorsque vous affichez un objet PHP recherche la méthode __toString() pour voir si le développeur n’a pas défini un format particulier pour cet objet 
     136 
     137    [php] 
     138    $myObject = new myClass(); 
     139    echo $myObject; 
     140    // Recherche d’une méthode magique 
     141    echo $myObject->__toString(); 
     142 
     143Les méthodes magiques sont décrites ici ([http://www.php.net/manual/en/language.oop5.magic.php](http://www.php.net/manual/en/language.oop5.magic.php)). Il est préférable d’en avoir une connaissance approfondie. 
     144 
     145### PHP Extension and Application Repository (PEAR) 
     146 
     147PEAR est « un framework et un système de distribution pour composant PHP réutilisable » PEAR vous permet de télécharger, installer, mettre à jour et désinstaller des scripts PHP. Lorsque vous utilisez un paquet PEAR, vous n’avez pas besoin de vous soucier de l’emplacement des scripts, de la façon de les rendre accessibles, ou de la façon d’étendre l’interface en ligne de commande (CLI) 
     148 
     149 
     150PEAR est un projet communautaire écrit en PHP et embarqué en standard dans les distributions PHP 
     151 
     152>**TIP** 
     153>Le site de PEAR, [http://pear.php.net/](http://pear.php.net/), fournit la documentation et les paquets groupés par catégories 
     154 
     155PEAR est la solution la plus professionnelle pour l’installation des librairies PHP. Symfony recommande l’utilisation de PEAR afin de centraliser l’installation au travers de multiples projets. Les plug-in Symfony et le framework lui-même sont des paquets PEAR. 
     156 
     157Vous n’avez pas besoin de connaître toute la syntaxe PEAR pour utiliser Symfony, vous devez simplement l’installer et comprendre ce qu’il fait. Pour vérifiez la présence de PEAR sur votre machine, exécuter la commande suivante sur une ligne de commande : 
     158 
     159    > pear info pear 
     160 
     161En réponse vous devriez avoir le numéro de version de l’installation de PEAR 
     162 
     163Le projet Symfony possède son propre dépôt PEAR ou canal. Attention, ce canal n’est disponible que depuis la version 1.4.0 de PEAR. Par conséquent, si devrez mettre à jour votre installation si elle est antérieure à cette version. Pour ce faire, exécuter la commande suivante : 
     164 
     165    > pear upgrade PEAR 
     166 
     167### L’Object-Relational Mapping (ORM) 
     168 
     169Les bases de données sont relationnelles et PHP5 et Symfony sont orientés objets.  
     170Pour faire communiquer les deux logiques, il est nécessaire d’employer une interface pouvant faire la passerelle entre les deux. Cette interface est appelée mappage objet-relationel (Object-Relational Mapping ou ORM) 
     171 
     172Un ORM est composé d’objets donnant accès aux données tout en conservant la logique de métier. 
     173[{An ORM is made up of objects that give access to data and keep business rules within themselves.}] 
     174 
     175Un des avantages de cette couche d’abstraction est qu’elle évite l’emploi de syntaxe spécifique à une base de données. En effet, cette couche traduit automatiquement les appelles au modèle objet en requêtes SQL optimisées pour la base employée. 
     176 
     177Cela veut dire qu’il devient aisé de changer de SGDB en plein milieu d’un projet. Imaginez que vous développiez un prototype pour un client qui n’aurait pas encore arrêté son choix sur telle ou telle base de données. Vous pourriez être amené à commencer ce prototype sur SQLite puis de passer sur MySql, PostgreSQL ou même Oracle au moment du choix du client. En une ligne de code et un fichier de configuration, cela devient possible. 
     178 
     179Une couche d’abstraction encapsule la logique de donnée. Le reste de l’application n’a rien besoin de savoir à propos des requêtes SQL et le SQL utilisé pour l’accès au données est facile à trouver. Les développeurs spécialisés dans la programmation de base de données savent parfaitement qui faire. 
     180 
     181Un autre avantage est la possibilité d’ajouter facilement n’importe quelle nouvelle classe d’accès à vos tables. On utilisera alors les objets à la place des enregistrement et les classes à la place des tables. Par exemple, si vous avez une table `Client`comportant deux champs , `FirstName`et `LastName`, vous pourriez avoir envie d’accéder uniquement au nom. Dans une logique orienté objet cela se fait simplement par l’ajout d’une méthode d’accès à la classe `Client ` comme suit : 
     182 
     183    [php] 
     184    public function getName() 
     185    { 
     186      return $this->getFirstName().' '.$this->getLastName(); 
     187    } 
     188 
     189Tous les accès répétés aux données et la logique de métier peut-être stockée au sein de tels objets. Par exemple, considérons une classe Panier dans lequel vous conservez certains éléments (qui sont eux-mêmes des objets). Pour récupérer le total du panier, vous pouvez ajouter une méthode `getTotal()` comme celle-ci : 
     190 
     191    [php] 
     192    public function getTotal() 
     193    { 
     194      $total = 0; 
     195      foreach ($this->getItems() as $item) 
     196      { 
     197        $total += $item->getPrice() * $item->getQuantity(); 
     198      } 
     199      return $total; 
     200    } 
     201 
     202C'est tout ! Imaginez si vous aviez du écrire cela en autrement !. 
     203 
     204A l’heure actuelle le meilleur ORM disponible pour PHP5 est Propel. Symfony intègre parfaitement ce projet open source et c’est pourquoi la manipulation de données de décrite dans cette ouvrage suit la syntaxe Propel. Ce livre va vous expliquer comment utiliser les objets Propel, mais pour de plus amples informations, visitez le site web de du projet ([http://propel.phpdb.org/trac/](http://propel.phpdb.org/trac/)). 
     205 
     206### Rapid Application Development (RAD) 
     207 
     208La programmation d’applications web a longtemps été lente et fastidieuse. En suivant le cycle de développement traditionnel (comme le RUP : Rational Unified Process par exemple), le développement d’applications web ne pouvait pas commencer avant qu’un ensemble de préliminaires soient établis, qu’un nombre conséquent de diagrammes UML (Unified Modeling Language) soient dessinés, qu’une tonnes de documentations soient écrites. C'était dû à la vitesse générale du développement, au manque de polyvalence des langages de programmation (vous deviez écrire, compiler, redémarrer et dieu sait quoi encore avant de voir votre programmer tourner) et surtout, au fait que les clients étaient assez raisonnables et ne changeaient pas d’idées constamment.  
     209 
     210Aujourd’hui, le monde avance plus vite et les clients on tendances à changer d’avis régulièrement. Evidemment, ils attendent que les équipes de développement s’adaptent rapidement à leurs nouveaux desiderata et modifient rapidement une application. Heureusement, l’usage des langages script comme Perl et PHP rend plus facile la mise en place de nouvelles stratégies de développement comme le RAD (Rapid Application Developpement) ou les méthodes agiles de développement. 
     211 
     212 
     213Une des idées directrices de ces méthodes est de pouvoir débuter le développement aussi vite que possible afin que le client puisse donner de nouvelles indications en s’appuyant sur un prototype fonctionnel. L’application se construit alors sur un mode itératif, créant des versions de plus en plus riches dans un cycle de développement court. 
     214 
     215Les avantages pour le développeurs sont nombreux. Il n’a plus besoin de se soucier de l’avenir lorsqu’il implémente une nouvelle fonctionnalité. La méthode employée devra être la plus simple possible. Cette idée peut-être illustrée par l’acronyme anglais KISS (Keep It Simple, Stupid) que l’on peut traduit par : Fait le simple, idiot. (NdT : évidemment FLSI c’est moins parlant) 
     216 
     217Lorsque les besoin évoluent ou lorsqu’une nouvelle fonctionnalité est ajouté, le code existant doit généralement être partiellement ré écrit. Cela est appelé le *refactoring* et est très fréquent dans le développement d’une application web. Le code est déplacé ailleurs en fonction de sa nature. Des parties similaires de codes sont fusionnées en un seul emplacement. Ce principe correspond à un autre acronyme anglais : DRY (Don’t Repeat Yourself) traduisible par : ne te répètes pas toi-même 
     218 
     219Pour s’assurer que l’application fonctionne toujours malgré les changements incessant, il est nécessaire d’avoir un jeu de test complet afin d’automatiser les tests unitaires. S’il est  correctement défini, il devient alors une manière sûre de vérifier l’intégrité du développement après un ajout de code ou un refactoring. Il existe même certaines méthodes de développement qui nécessitent l’écriture du jeu de test avant le codage. Ce principe est le développement piloté par les tests connu via l’acronyme anglais TDD (test-driven development) 
     220 
     221>**NOTE** 
     222>Les méthodes agiles possèdent beaucoup d’autres principes et usages, comme l’Extreme Programming (XP) Il s’agit d’une des méthodes de développement les plus efficace. Beaucoup d’ouvrages traitent de cette méthodes et vous permettront de vous familiariser avec elle. Nous vous recommandons de débuter par le livre de Ken Beck, créateur de la méthode, eXtreme Prgramming : La référence (éd. CampusPress)  
     223 
     224Symfony est parfait pour le RAD. En fait, il a été construit sur ce principe par une web agency appliquant le RAD pour ses propres projets. Apprendre Symfony ne consiste donc pas à apprendre un nouveau langage mais plus employé les bons usages et faire les bons choix dans l’idée de réaliser des applications de façon plus efficace. 
     225 
     226Le site du projet Symfony propose un tutoriel  pour comprendre le développement basé sur une méthode agile . Il s’agit d’askeet ([http://www.symfony-project.com/askeet](http://www.symfony-project.com/askeet)), et nous vous recommandons de vous pencher dessus si vous souhaitez en savoir plus sur ce type de développement. 
     227 
     228### YAML 
     229 
     230Selon le site officiel du YAML([http://www.yaml.org/](http://www.yaml.org/)), YAML est un langage de sérialisation de données simple pensé pour être aisément compréhensible et renforcer l’interaction avec des langages script. Autrement dit, YAML est un langage simplifié de description de données en XML. C’est particulièrement utile pour décrire des données pouvant être représentées par une combinaison de listes, tableaux (de hachage) et données scalaires, comme ce qui suit : 
     231 
     232    [php] 
     233    $house = array( 
     234      'family' => array( 
     235        'name'     => 'Doe', 
     236        'parents'  => array('John', 'Jane'), 
     237        'children' => array('Paul', 'Mark', 'Simone') 
     238      ), 
     239      'address' => array( 
     240        'number'   => 34, 
     241        'street'   => 'Main Street', 
     242        'city'     => 'Nowheretown', 
     243        'zipcode'  => '12345' 
     244      ) 
     245    ); 
     246 
     247Ce tableau PHP peut automatiquement être créé par une analyse de la structure YAML suivante : 
     248 
     249    house: 
     250      family: 
     251        name:     Doe 
     252        parents: 
     253          - John 
     254          - Jane 
     255        children: 
     256          - Paul 
     257          - Mark 
     258          - Simone 
     259      address: 
     260        number: 34 
     261        street: Main Street 
     262        city: Nowheretown 
     263        zipcode: "12345" 
     264 
     265YAML est représenté par un indentation de texte où les éléments d’une liste sont identifiés pas un tiret (-), la paire clé/valeur est séparée par deux points ( :). De plus, YAML possède une syntaxe raccourcie pour décrire la même structure en moins de lignes. Les tableaux sont alors représentés par `[]` [{et les fonctions de hachage par `{}`}]NDT (traduction incertaine). Par conséquent la précédente définition YAML peut s’écrire comme suit : 
     266 
     267    house: 
     268      family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] } 
     269      address: { number: 34, street: Main Street, city: Nowheretown, zipcode: "12345" } 
     270 
     271YAML est l’acronyme de ‘Yet Another MArkup Language’ et doit se prononcer « yamel ». Le format date de 2001 et une multitude de parsers existe pour une grande variété de langages.  
     272 
     273>**TIP** 
     274>  
     275> Les spécifications de YAML sont disponibles sue le site [http://www.yaml.org/](http://www.yaml.org/). 
     276 
     277Comme vous pouvez le constater, YAML est bien plus rapide que XML et bien puissant que les fichiers `ini`. C’est pourquoi YAML est le langage de prédilection de Symfony pour le stockage de configuration. Vous rencontrerez beaucoup de fichiers YAML dans ce livre, mais c’est tellement simple que vous n’aurez probablement pas besoin d’en apprendre plus sur le sujet. 
     278 
     279Résumé 
     280------- 
     281 
     282Symfony est un framework d’application écrit en PHP5. Il s’agit d’une couche supplémentaire au-dessus de PHP, fournissant des outils facilitant le développement d’applications web complexes. Ce livre vous expliquera comment. Vous n’avez besoin que d'être familiarisé avec les concepts de base de la programmation modernes que sont la POO (programmation orientée objet), l’ORM (object-relational mapping) et le RAD (rapid application developpement). La seule connaissance technique requise est la connaissance de PHP5. 
     283 
     284}}}