Framework Symfony

Introduction au Framework Symfony2


I-Introduction

2-Définition d’un Framework

Un 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, Joomla 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.

2-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é Sensio Labs. Mais Symfony2 étant un script open source, il a également été écrit par toute la communauté.


Figure 1 : Flux applicatif entre une requête et une réponse sous Symfony2.

II.L'architecture des fichiers

Le dossier de symfony contient un ensemble des répertoires. En effet, tout est bien rangé dans chaque répertoire, il nous faut donc comprendre à quoi ils servent.En voici la liste :

  • app
  • src
  • vendor
  • web

1-Le répertoire /app

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é 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 ».

2-Le répertoire /src

Dans ce répertoire, nous organiserons notre code en bundles, des briques de notre application, dont nous verrons la définition plus loin.

Vous pouvez voir que ce répertoire n'est pas vide : il contient en effet quelques fichiers exemples, fournis par Symfony2. Nous les supprimerons plus tard dans ce cours.

3-Le répertoire /vendor

Ce répertoire contient toutes les bibliothèques externes à notre application. Dans ces bibliothèques externes, j'inclus Symfony2 ! Vous pouvez parcourir ce répertoire ; vous y trouverez des bibliothèques commeDoctrine, Twig, SwiftMailer, etc.

Et une bibliothèque, c'est quoi exactement ?

Une bibliothèque est une sorte de boîte noire qui remplit une fonction bien précise, et dont on peut se servir dans notre code. Par exemple, la bibliothèque SwiftMailer permet d'envoyer des e-mails. On ne sait pas comment elle fonctionne (principe de la boîte noire), mais on sait comment s'en servir : on pourra donc envoyer des e-mails très facilement, juste en apprenant rapidement à utiliser la bibliothèque.

4-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),dont nous parlerons juste après.

En fait, c'est le seul répertoire qui devrait être accessible à vos visiteurs. Les autres répertoires ne sont pas censés être .

5-Environnements de travail

Symfony offre plusieurs environnements de travail :

  • L'environnement de développement, appelé « dev », accessible en utilisant le contrôleur frontal app_dev.php. C'est l'environnement que l'on utilisera toujours pour développer.
  • L'environnement de production, appelé « prod », accessible en utilisant le contrôleur frontal app.php.

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.

II.Symfony2et ses bundles

1-Le concept

Un bundle est une brique de votre application. Symfony2 utilise ce concept novateur qui consiste à regrouper dans un même endroit, le bundle, tout ce qui concerne une même fonctionnalité.Par exemple, on peut imaginer un bundle « Blog » dans notre site, qui regrouperait les contrôleurs, les modèles, les vues, les fichiers CSS etJavaScript, etc. Tout ce qui concerne directement la fonctionnalité blog de notre site.

Exemples :

  • Un bundle Utilisateur, qui va gérer les utilisateurs ainsi que les groupes, intégrer des pages d'administration de ces utilisateurs, et des pages classiques comme le formulaire d'inscription, de récupération de mot de passe, etc.
  • Un bundle Blog, qui va fournir une interface pour gérer un blog sur le site. Ce bundle peut utiliser le bundle Utilisateur pour faire un lien vers les profils des auteurs des articles et des commentaires.
  • Un bundle Boutique, qui va fournir des outils pour gérer des produits et des commandes dans un site e-commerce par exemple.

2-L'intérêt

Le premier intérêt de la découpe en bundle est 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 ! Nous aurons d'ailleurs l'occasion de le faire dans les cours suivants.

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. Vous avez besoin d'un livre d'or ? Il existe sûrement un bundle. Vous avez besoin d'un blog ? Il existe sûrement un bundle, etc.

Presque tous les bundles de la communauté Symfony2 sont regroupés sur un même site : https://github.com

Un bundle contient tout : routes, contrôleurs, vues,modèles, classes personnelles, etc.


Partager ce cours avec tes amis :
 
Rédigé par Mostafa Sedoki
Professeur d'Informatique dans les CPGE

Cours Similaires :