Vous êtes sur la page 1sur 5

JHINGOOR Akram

25 janvier 2015

VEILLE TECHNOLOGIQUE :
SYMFONY
Symfony est un ensemble de composants PHP, un Framework pour application
web, une philosophie, ainsi qu'une communaut le tout fonctionnant en
harmonie.

Pourquoi Symfony comme thme de veille


Symfony, un Framework qui m'a beaucoup servi durant mon stage et sur lequel
j'ai pu m'appuyer pour dvelopper au sein de la socit Adenis. Ce Framework
tait en quelque sorte une suite logique dans l'apprentissage du PHP puisqu'il est
recherch sur le march du travail et que la communaut Symfony est grande.
J'ai choisi ce thme pour ma veille technologique car dans un premier temps, je
devais me former sur cette technologie afin de pouvoir participer aux projets de
la socit et dans un second temps, jai trouv cette technologie intressante
puisque le PHP tait le premier langage dans lequel jai cod.
Cette veille me permet de valider des comptences suivantes :
A5.2.2 Veille technologique
A5.2.3 Reprage des complments de formation ou dauto-formation
utiles lacquisition de nouvelles comptences
A5.2.4 tude dune technologie, dun composant, dun outil ou d'une
mthode.

Les origines de Symfony


Le site du Framework symfony a t lanc en octobre 2005. lorigine du projet,
on trouve une agence web franaise, Sensio, qui a dvelopp ce qui sappelait
lpoque Sensio Framework pour ses propres besoins et a ensuite souhait en
partager le code avec la communaut des dveloppeurs PHP. Le projet est alors
devenu symfony (car le crateur voulait garder les initiales SF comme Sensio
Framework ), puis Symfony partir de la version 2

Pr requis matrielles et logicielles


Serveur Apache &PHP : WAMP/XAMP (Windows) ou LAMP (Linux)
Les fichiers sources de base lapplication (disponible sur le site officiel)
Un diteur de texte (Sublime Text, NotePad++, Gedit). Pour ma part, jutilisais
NetBeans car ctait trs adapt Symfony notamment avec la console qui
pouvait gnrer des entits objets.

JHINGOOR Akram

25 janvier 2015

Symfony, les pour et les contres


Avantages :
- Open source: Symfony est distribu sous une licence Open Source, vous
navez donc pas de contraintes imposes et cela vous permet le
dveloppement de solutions propritaires;
- Grande communaut d'utilisateurs : Avec une forte utilisation par les
professionnels et une grande communaut de dveloppeurs ayant utilis
Symfony, Quelle que soit le problme, la question ou le bug, vous
trouverez toujours la rponse auprs du support de SensioLabs ou auprs
de la communaut.
- Gain de temps et qualit optimise : Par lutilisation de composants dj
existants, on supprime les tches faible valeur ajoute pour se
concentrer exclusivement sur des aspects plus complexes. Le temps gagn
sur ces tches peut tre ddi des composants plus spcifiques ou des
tests en profondeur, vous garantissant ainsi un code solide, durable et un
projet de bonne qualit.
Inconvnients :
- L'apprentissage complexe et lourde : Apprendre un framework ncessite
du temps et de la patience mais Symfony demande un temps
d'apprentissage important. Symfony est quand mme un ensemble de
composants et qu'il faut pouvoir l'utiliser(moteur de templates, Doctrine,
etc...)
- Coder en Symfony, un autre langage : Il est vrai que Symfony2 est un
framework PHP mais le "PHP dur la main" n'est pas possible puisqu'il faut
utiliser d'autres langages pour comprendre (Twig pour les vues, yml pour
les config de Symfony...). Programmer en Symfony2 signifie rester
strictement sur l'architecture du MVC certes mais celui propre Symfony.
Pour dbogguer, on sait dj que cela peut devenir difficile.

Dbuter avec Symfony


Le dcoupage est effectu comme suit :
/app : on y trouve les fichiers de configurations, les paramtres et le cache
/src : cest ici quest le code source (sous forme de bundles)
/web : contrleur frontal app.PHP (quivalent de index.PHP) et les fichiers de
css
/vendor : les composants : Doctrine, Twig, librairies externes
En ralit, le dossier /web comporte deux contrleurs frontaux, un pour
lenvironnement de production destin aux internautes app.PHP et un second
2

JHINGOOR Akram

25 janvier 2015

destin aux dveloppeurs app_dev.PHP qui est optimis pour la rsolution des
problmes et le dbogage.
Comme expliqu prcdemment, dans le dossier /src on trouve des bundles,
ce sont simplement des dossiers dans lesquels on y trouve des fonctions
spcifiques pour telle ou telle tches effectuer par lapplication. Cela permet,
une fois de plus, de dcouper son code et ainsi faciliter la lecture de celui-ci.

Le routing :
Une chose importante savoir, Symfony fonctionne grce un systme de
route . Cest dire que chaque fonction cre une route unique, ce qui permet
dexcuter la fonction correspondante la route passe dans lurl. Les routes
sont dfinies dans le fichier routing.yml situ dans le dossier /app/config/ .
Exemple de route dans le fichier routing.yml :
helloworld :
pattern: /hello-world
defaults: {
_controller: TestBundle:Test:hello
}
(Ici, lurl www.monsite.com/hello-world redirige vers la fonction hello du
contrleur TestController du bundle TestBundle ).

Les contrleurs :
Comme dit prcdemment, Symfony respecte le modle MVC et le PHP objet,
ainsi le contrleur est le chef dorchestre de lapplication. Chaque bundle a
donc son propre contrleur (cependant, il nest pas rare de trouver plusieurs
contrleurs pour un seul bundle).
Exemple du contrleur TestController :
<?PHP
namespace Test\TestBundle\Controller;
useSymfony\Bundle\FrameworkBundle\Controller\Controller;
useSymfony\Component\HttpFoundation\Response;

classTestController extends Controller


{
public function helloAction()
{
$hello = Hello world ;
3

JHINGOOR Akram

25 janvier 2015

return $this->render(MainBundle:hello:hello.html.twig,
array(hello => $hello));
}
}
(ici, la fonction helloAction() permet de gnrer la page hello.html.twig en lui
passant la variable $hello dfinie juste avant)

Les templates :
Symfony2 inclut un moteur de templates, Twig, les vues sont donc gnres
grce ce moteur. Les vues permettent au webdesigner davoir un code plus
lisible et de scuriser les variables automatiquement.
Exemple de la vue hello.html.twig :
<!DOCTYPE html>
<html>
<head>
<title>Hello world</title>
</head>
<body>

<h1>{{ hello }}</h1> // Affichage du contenu de la variable


$hello

</body>
</html>

Doctrine :
Doctrine est, contrairement Composer, intgr par dfaut dans Symfony.
Doctrine est un ORM (Object Relation Manager), son but est donc de permettre
lutilisateur de communiquer avec une base de donnes au travers dobjets
(crs grce au PHP) sans avoir besoin dcrire les requtes (requtes MySql, par
exemple). Doctrine permet aussi la cration dentits. Elles pourront tre utilises
comme objet en PHP et Doctrine se sert de ces entits pour gnrer la base de
donner automatiquement (une entit = un table dans la base de donnes).

Sources
http://symfony.com/fr/what-is-symfony
4

JHINGOOR Akram

25 janvier 2015

https://fr.wikipedia.org/wiki/Symfony
https://openclassrooms.com/courses/developpez-votre-site-web-avec-leframework-symfony2/symfony2-un-framework-php