@SalemSaiid 

 
          
Symfony 2
Symfony 2



Symfony 2 est un framework web permettant de réaliser des applications web en PHP.

Symfony est l’un des meilleurs Framework mondiaux avec Rails (ruby) et Django (python).
D'après son créateur Fabien Potencier, Symfony 2 est en fait plus un rassemblement de bibliothèques et de composants tous fortement découplés assemblées et paramétrés pour fonctionner ensemble.
Donc qu'est-ce que Symfony2 ?

Les Composants Symfony2



Premièrement, Symfony2 est une collection de plus de vingt bibliothèques indépendantes qui peuvent être utilisées dans n'importe quel projet PHP.

Ces bibliothèques, appelées les Composants Symfony2, contiennent des choses utiles en toute situation, quelle que soit la manière dont votre projet est développé.
Pour en nommer quelques-unes :
 

HttpFoundation

Contient les classes Request et Response, ainsi que d'autres classes pour la gestion des sessions et des uploads de fichiers.      
 

Routing

Un puissant et rapide système qui vous permet de lier une URI spécifique (par exemple: /contact) à l'information lui permettant de savoir comment gérer cette requête (par exemple: exécute la méthode contactAction() ).      
 

Form

Un framework complet et flexible pour la création de formulaires et la gestion de la soumission de ces derniers.      
 

Validator

Un système permettant de créer des règles à propos de données et de valider ou non les données utilisateurs soumises suivant ces règles.      
 

ClassLoader

Une bibliothèque pour le chargement automatique (« autoloading ») qui permet aux classes PHP d'être utilisées sans avoir besoin d'inclure (« require ») manuellement les fichiers contenant ces dernières.      
 

Templating

Une boîte à outils pour afficher des templates, gérer leur héritage (c-a-d qu'un template est décoré par un layout) et effectuer d'autres tâches communes aux templates.      
 

Security

Une puissante bibliothèque pour gérer tous les types de sécurité dans une application.      
 

Translation

Un framework pour traduire les chaînes de caractères dans votre application.  

En quoi Symfony2 tient ses promesses


-Votre application est constituée de code clair et bien organisé .
-100% du code que vous écrivez est pour votre application.

-Symfony2 vous donne accès à des outils open source comme Doctrine et le composants de templates, de sécurité, de formulaires, de validation et de traduction.


-Une communauté active qui utilise le framework et qui contribue en retour.


-De nombreux bundles open-source peuvent être trouvés, ils sont notamment regroupés sur KnpBundles.


-Une documentation de qualité et régulièrement mise à jour.


Architecture des fichiers d'une application 
Symfony2
  • app
    • logs
    • resources
    • cache
    • config
  • src
    • Bundles
      • controller
      • entity
      • recources
        • views
        • config
        • public
      • tests
  • vendor
    • Symfony
    • Doctrine
    • Twig
    • SwiftMailer
    • ...
  • web
    • Bundles (symlink)
    • app.php (front controller)
    • app_dev.php (Dev front controller)
Controller
EventController.php
Event.php

Routing
Kernel Symfony

app.php

                     

http://www.happyevents.com/event/show/5
 

Le Déroulement d'une Application Symfony
M odel
View

Contrôleurs


Les contrôleurs sont des fonctions généralement regroupées dans des classes par "thème" qui génèrent une réponse à partir d'une requête:

Le but d'un contrôleur est toujours le même : créer et retourner un objet Response. Durant ce processus, il peut lire des informations dans la requête, charger une ressource depuis la base de données, envoyer un email, ou définir une variable dans la session de l'utilisateur. Mais dans tous les cas, le contrôleur va finalement retourner l'objet Response qui sera délivré au client.

Routage

Le routage est le fait d'écrire des règles pour associer des URLs à ces actions.
Plusieurs possibilité : yml, xml et annotation.
Symfony vous propose d'utiliser massivement  les annotations, il s'agit en fait de commentaires que vous pouvez ajouter au dessus de classes ou méthodes qui vous permettent d'ajouter des informations.
Par exemple, il est possible de configurer le routage de cette manière:
Dans cet exemple, nous décrivons au routeur que les URLs de la forme /hello/quelquechose devra utiliser la méthode helloAction($name) pour générer la réponse, en passant le quelquechose en $name
  

Twig
Symfony 2 est livré avec un très bon système de templates nommé Twig .
C'est un script qui permet d'utiliser des templates, c'est-à-dire des fichiers qui ont pour but d’afficher le contenu de votre page HTML de façon dynamique mais sans PHP, en utilisant leur propre langage.
Le premier objectif est de séparer la couche de présentation des applications web.
Twig offre une meilleure
  1. Lisibilité :   {{ mavar }}  à la place de  <?php echo $mavar ; ?>
  2. Ré-utisabilité :   héritage entre Template.
  3. Sécurité:   variables protégées.
 
Afficher une variable

Afficher une $var :    {{ pseudo }}
L’index d’un array():        {{ user[‘id’] }}
Getter $object->getAttribut():      {{ user.id }}
$var avec filtre :     {{ pseudo|upper }}
Date (datetime) :   {{ date|date(‘d/m/Y’) }}
Concaténer :       {{ nom ~ " " ~ prenom }}
Remarque:
  Twig  protège par défaut les $var donc si on veut afficher l’html : {{ var_html|raw }}
Pour insérer des variables globales il est possible de le faire dans : app/config/config.yml 
# app/config/config.yml
    twig :
       globals :
             copyright : Rencontre-Ados
Ce qui donnera dans le template twig :
      <footer>© 2013 {{ copyright }}</footer>

Conditions & boucles

Un simple exemple d'include:
Les blocs peuvent alors être surchargés.                  Il est aussi possible d'utiliser le mot clé parent() pour faire appel à la template mère et utiliser son contenu, comme dans le cas du titre de ce exemple.
La template précédente peut être héritée comme cela:

Hériter et inclure des templates

Voici un exemple de template:
{% block contents %}  : est un bloc qui pourra être surchargé dans les templates filles.
{% block('title') %}  : sert à ré-afficher le contenu du block title précédement utlisé.

Doctrine2

Pour gérer la persistance en base de données, Symfony2 intègre la célèbre bibliothèque Doctrine2 , très ressemblante à Hibernate, un outil provenant du monde Java. 

 Cet outil permet de faire abstraction des accès à la base de données, de réaliser des requêtes, mais surtout de faire le lien (on parle de "mappage") entre le monde relationnel de votre base de données et le monde objet (on parle alors d' ORM ).

Les enregistrement de votre base de données seront mis en correspondance avec les objets que vous manipulez. Ainsi, au lieu de penser à votre base de données, vous n'avez qu'à penser objet. Si vous souhaitez par exemple manipuler des produits, vous écrirez:

Ceci est une classe simple qui définit votre objet, vous pourriez l'écrire et l'utiliser dans n'importe quel contexte.

Le principe maintenant n'est pas d'agir au niveau du fonctionnement de cette classe, mais de fournir des informations à Doctrine2 pour qu'il puisse savoir comment persister et récupérer des produits dans la base de données, c'est ce que l'on appelle le mapping, ou mapage.

Il est par exemple possible dans Symfony2 de réaliser ce mappage à l'aide d'annotations:


Ici, le commentaire au dessus du texte est en fait lu et utilisé par Doctrine2 pour savoir comment faire correspondre l'atribut $name avec la base de données.

Symfony 2

By Salem Saïd

Symfony 2

  • 2,846