télécharger 155.16 Kb.
|
SOMMAIRE![]() Contexte technologique : SYMFONY2 1. Mise en œuvre de la technologie visée :
2. Contexte organisationnel et financier
3. Note d'opportunité
Contexte technologique : ![]() Définition d’un FrameworkUn framework est un ensemble de composants qui servent à créer les fondations, l'architecture et les grandes lignes d'un logiciel. Plus précisément est une boite à outils conçue par un ou plusieurs développeurs et à destination d'autres développeurs. Contrairement à certains scripts tels que Wordpress, DotClear ou autres, un framework n'est pas utilisable tel quel. Il n'est pas fait pour être utilisé par les utilisateurs finaux. Le développeur qui se sert d'un framework doit tout de même se concentrer sur la forme du développement Qu'est-ce que Symfony2 ?Symfony2 est un framework PHP francais utilisé dans des entreprises du monde entier donc la première version est sortie en 2005 .Il est édité par la société SensioLabs, dont le créateur est Fabien Potencier. Mais Symfony2 étant un script open source, il a également été écrit par toute la communauté : beaucoup de Français, mais aussi des développeurs de tout horizon : Europe, États-Unis, etc. 1. Mise en œuvre de la technologie visée :
Rendez-vous sur le site de Symfony2, rubrique « Download » : http://symfony.com/download, et téléchargez la version "Symfony Standard (.zip)". Une fois l'archive téléchargée, décompressez les fichiers dans votre répertoire web habituel, par exemple "C:\wamp\www" pour Windows ou "/var/www" pour Linux.
Vérifier votre configuration de PHP Symfony2 a quelques contraintes par rapport à votre configuration PHP. Par exemple, il ne tourne que sur la version 5.3.2 ou supérieure de PHP. Pour vérifier si votre environnement est compatible, rendez-vous à l'adresse suivante : http://localhost/Symfony/web/config.php. En cas d'incompatibilité (version de PHP notamment), Symfony2 vous demande de régler les problèmes avant de continuer. S'il ne vous propose que des « recommandations », vous pouvez continuer sans problème. Ce sont des points que je vous conseille de régler, mais qui sont facultatifs. Vous pouvez dès à présent exécuter Symfony2. Rendez-vous sur la page http://localhost/Symfony/web/app_dev.php pour accéder à la page d’accueil de SYMFONY2.
Parties les plus importantes du tutoriel du SiteDuZéro : Liste des répertoiresLe répertoire app/ Il contient la configuration, le cache, les fichiers logs, etc. Ce sont des fichiers qui concernent l'entièreté de votre site, contrairement aux fichiers de code source qui seront découpés par fonctionnalités de votre site. Dans Symfony2, un projet de site internet est une application, simple question de vocabulaire. Le répertoire app/ est donc le raccourci pour application. Le répertoire src/ Il contient le code source de l’application. Dans ce répertoire, nous organiserons notre code en "bundles", des briques de notre application, dont nous verrons la définition plus loin. Le répertoire vendor/ Ce répertoire contient toutes les librairies externes à notre application. Dans ces librairies externes, on inclut Symfony2 ! Vous pouvez parcourir ce répertoire, vous y trouverez des librairies comme Doctrine, Twig, SwiftMailer, etc. Le répertoire web/ Ce répertoire contient tous les fichiers destinés à vos visiteurs : images, fichiers CSS et JavaScript, etc. Il contient également le contrôleur frontal (app.php). C'est le seul répertoire qui devrait être accessible à vos visiteurs. Le contrôleur frontal Deux environnements de travail Il offre plusieurs environnements de travail :
En cas d’erreur le mode « prod » nous dit juste « page introuvable » alors que le mode « dev » nous donne plein d'informations sur l'origine de l'erreur, indispensables pour la corriger. Les erreurs côtés utilisateurs sont stockées dans app/logs/prod.log. Symfony2 et ses bundles La découpe en « bundles » Symfony2 utilise un concept innovant qui consiste à regrouper dans un même endroit, le bundle, tout ce qui concerne une même fonctionnalité. Cette organisation permet de découper naturellement nos fonctionnalités, et ainsi de ranger chaque fichier à sa place. Un bundle Blog, qui va fournir une interface pour gérer un blog sur le site. Ce bundle peut utiliser le bundle Membre pour faire un lien vers les profils des auteurs des articles et des commentaires. Et ces bundles, parce qu'ils respectent des règles communes, vont fonctionner ensemble. Par exemple, un bundle « Forum » et un bundle « Utilisateur » devront s'entendre : dans un forum, ce sont des utilisateurs qui interagissent. ;) En plus d'organiser votre code par fonctionnalités, la découpe en bundles permet l'échange de bundles entre applications ! Cela signifie que vous pouvez développer une fonctionnalité, puis la partager avec d'autres développeurs ou encore la réutiliser dans un de vos autres projets. Et bien entendu, cela marche dans l'autre sens : vous pouvez installer dans votre projet des bundles qui ont été développés par d'autres ! Le principe même des bundles offre donc des possibilités infinies ! Imaginez le nombre de fonctionnalités classiques sur un site internet, que vous n'aurez plus à développer vous-mêmes. Presque tous les bundles de la communauté Symfony2 sont regroupés sur un même site : http://knpbundles.com/. Un bundle contient tout : routes, contrôleurs, vues, modèles, classes personnelles, etc. Utilisation de la console Créer un bundle Il faut dans un premier temps exécuter la commande php app/console generate:bundle. Puis définir le namespace du bundle. Par convention, on le compose de trois parties
Le nom du bundle est par convention celui du namespace, sans les slashes. La destination du bundle est celle par défaut. C’est à dire src/ Le format du bundle est à définir et il gère simplement le format de la configuration. Il existe plusieurs moyens comme vous pouvez le voir : Yaml, XML, PHP ou Annotations. Le Yaml (yml) est souvent utilisé pour les bundles. Ensuite il suffit de demander de générer et tout accepter pour que le bundle soit créé. Symfony2 a enregistré notre bundle auprès du Kernel Pour qu'un bundle soit opérationnel il faut :
Créons notre route Le routeur (ou « router ») ? Une route ? Objectif L'objectif du routeur est de dire à Symfony2 ce qu'il doit faire lorsque que l'on appelle l'URL /hello-world (par exemple). Nous devons donc créer une route qui va dire : « lorsque l'on est sur l'URL /hello-world, alors on appelle le contrôleur « Blog » qui va afficher un Hello World. ». Les routes se définissent dans un simple fichier texte, que Symfony2 a déjà généré pour notre SdzBlogBundle. Usuellement, on nomme ce fichier Resources/config/routing.yml dans le répertoire du bundle. Ouvrez le fichier, et rajoutez cette route à la suite de celle qui existe déjà : Créer un fichier de routes # src/Sdz/BlogBundle/Resources/config/routing.yml HelloTheWorld: pattern: /hello-world defaults: { _controller: SdzBlogBundle:Blog:index } ➥L’indentation se fait avec 4 espaces et non des tabulations dans les fichiers .yml ➥Si vous rencontrez une erreur lors d’un copier-coller, pensez à bien définir l'encodage du fichier en "UTF-8 sans BOM" et à supprimer les éventuels caractères non désirés. Essayons de comprendre rapidement cette route :
La valeur donnée au _controller : « SdzBlogBundle:Blog:index ». Cette valeur se découpe en suivant les pointillés les deux-points (« : ») :
Les routes permettent à notre bundle d'être indépendant : si plus tard nous ajoutons, modifions ou supprimons des routes dans notre bundle, nous ne toucherons qu'au fichier src/Sdz/BlogBundle/Resources/config/routing.yml au lieu de app/config/routing.yml. Créons notre contrôleur 1. Le fichier de notre contrôleur « Blog » Dans un bundle, les contrôleurs se trouvent dans le répertoire Controller du bundle. Le nom des fichiers des contrôleurs doit respecter une convention très simple : il doit commencer par le nom du contrôleur, ici « Blog », suivi du suffixe « Controller ». Au final, on doit donc créer le fichier src/Sdz/BlogBundle/Controller/BlogController.php. Même si Symfony2 a déjà créé un contrôleur DefaultController pour nous, ce n'est qu'un exemple, on va utiliser le notre. Ouvrez donc notre BlogController.php et collez-y le code suivant :
Allez voir sur http://localhost/Symfony/web/app_dev.php/hello-world Même bundle mais contrôleur différent. Maintenant, essayons de comprendre rapidement ce fichier :
Utiliser Twig avec Symfony2 Créons le fichier du template Le répertoire des templates (ou vues) d'un bundle se trouve dans le dossier "Resources/views". Créons notre propre répertoire "Blog" et créons notre template"index.html.twig" dans ce répertoire. Nous avons donc le fichier "src/Sdz/BlogBundle/Resources/views/Blog/index.html.twig". Blog/index.html.twig ? Découpons ce nom :
Revenez à notre template et copiez-collez ce code à l'intérieur :
|
![]() | ![]() | ||
![]() | ![]() | ||
![]() | «Pays des mille sourires». J’invite particulièrement les Rotariens qui ne sont jamais venus en Asie à saisir cette opportunité. Même... | ![]() | «Pourrez~vous former un plan de travail ?» Un large extrait de cette lettre d'Alain est cité dans la «Note de l'éditeur» qui se trouve... |
![]() | «…je sais gré à tous ceux qui ont contribué à cette belle présentation de m’avoir offert l’opportunité d’un nouveau contact avec... | ![]() | «emplois d’avenir» en ce sens. En contrepartie, le Conseil général aide toutes les associations qui souhaitent embaucher ces jeunes.... |
![]() | «Pour microsens et euromicron, cette commande représente une excellente opportunité d’affirmer la capacité du groupe à apporter des... | ![]() | «avantages» tirés de projets de développements économiques dans le cadre d’analyses «coûts-avantages» (A. C. A.) ou «coûts-bénéfices»... |