Presentation Symfony2
-
Upload
ahmed-abatal -
Category
Technology
-
view
615 -
download
2
description
Transcript of Presentation Symfony2
![Page 1: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/1.jpg)
1
![Page 3: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/3.jpg)
3
Chapitre 1 : Vue d'ensemble de Symfony 2
![Page 4: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/4.jpg)
4Symfony 2, un Framework PHP
Symfony2 est un Framework PHP open source , c' est-à-dire une boite à outils faite en PHP dans but de vous simplifier le développement des applications et sites web.
Un Framework Français créé par la société SensioLab, en sa première version sortie en 2005
Une communauté active qui utilise le framework et qui contribue en retour
Une documentation de qualité et régulièrement mise à jour
Un code source maintenu par des développeurs attitrés
Un code qui respecte les standards de programmation
Un support à long terme garanti et des mises à jour qui ne cassent pas la compatibilité
![Page 5: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/5.jpg)
5Symfony 2, un Framework PHP Symfony 2 nécessite une version de PHP supérieure ou égale
à 5.3.3 et propose une série de fonctionnalités avancées telles que :
un système de configuration en cascade utilisant le langage YAML ;
le support d’Ajax ;
l’internationalisation des projets ;
un générateur de backoffice ;
un système de mise en cache …
![Page 6: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/6.jpg)
6Télécharger Symfony 2.2
Disponible sur le lien : http://symfony.com/download
Deux options de téléchargement :
1. Version " without vendors" . Les librairies tierces seront ainsi téléchargées via Git en exécutant le script « bin/vendors » situé dans l'archive
exécutez la commande : php bin/vendors install
2. Version simple, avec les vendors, pour avoir toutes les librairies incluses
![Page 7: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/7.jpg)
7Première Installation 1/3
Décompressez les fichiers dans votre répertoire web habituel, par exemple "C:\wamp\www" pour Windows
Vérifier votre configuration PHP en accédant à l’url :
« http://localhost/symfony/web/config.php »
![Page 8: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/8.jpg)
8Première Installation 2/3
Configuration de votre instance Symfony :
http://localhost/symfony/web/app_dev.php/_configurator
Configuration en deux étapes :
1. Données d’accès à la base de donnée
2. Génération d’un hashcode utilisé pour des raisons de sécurités
![Page 9: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/9.jpg)
9Première Installation 3/3
C’est bon ! Vous pouvez maintenant vous connecter à votre premier application Symfony 2 :
http://localhost/symfony/web/app_dev.php/
![Page 10: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/10.jpg)
10
Arborescence des fichiers 4 principaux répertoires :
1. app/ : Contient les fichiers des applications sauf le code source, notamment; la configuration, le cache, les fichiers logs etc...
2. vendor/ : contient toutes les librairies externes, comme Doctrine, Twig, Swiftmailer…
3. Web/ : Ce répertoire contient tous les fichiers destinés aux visiteurs : images , fichiers CSS et JavaScript … Il contient également le contrôleur frontal (app.php), dont nous parlerons après. (NB: c’est le seul repertoire qui doit être accessible par les internautes)
4. src/ : contient le code source des applications organisé sous forme de bundles (par défaut il contient un bundle d’exemple fourni par Symfony)
![Page 11: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/11.jpg)
11
Symfony et MVC 2
![Page 12: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/12.jpg)
12
La notion de « Bundle »
Un bundle est une brique de votre application, permet de regrouper toutes les ressources
Quel intérêt ?
E n plus d' organiser votre code par fonctionnalité, 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 de même utiliser des bundles d’autre développeurs
Dans Symfony2, chaque partie de votre site est un bundle
Les Bundles de la communauté : http://knpbundles.com/
![Page 13: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/13.jpg)
13
Créer un « Bundle »
Dans la racine de Symfony, taper la commande :
php app/console generate:bundle
Ensuite suivre les étapes sur la consoles
![Page 14: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/14.jpg)
Créer un « Bundle »14
Générer un bundle en ligne de commande
![Page 15: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/15.jpg)
15
Structure d’un bundle
Controller/ : Contient les contrôleurs
DependencyInjection/ : les informations sur votre bundles
Ressources/
--- config/ : Contient les fichier de configuration, notamment les routes
--- doc/ : contient la documentation
--- public/ : Contient les fichiers publics de votre bundle : fichiers CSS et JavaScript, images, etc
--- translations/
--- views / : Contient les vues de notre bundle ( les templates Twig )
Tests/ : Contient vos éventuels tests unitaires et fonctionnels.
![Page 16: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/16.jpg)
Bundle : Controller et View 1
6
Récupère les informations http Renvois la réponse. Contient la logique de l’application. Considéré comme chef d’orchestre qui fait la liaison entre tous les éléments.
Afficher le résultat de l’ action Assurer la séparation entre le code HTML et le code PHP, Utilisation du moteur de template Twig.
![Page 17: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/17.jpg)
Créer un Bundle17
Actions et Vues
![Page 18: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/18.jpg)
Manipuler les variables envoyées en POST et/ou GET
Récupérer l ' objet Request depuis notre contrôleur
Utiliser l’objet pour récupérer les variables GET et/ou POST
GET : $request->query->get(‘nom_variable’)
POST : $request->request>get(‘nom_variable’)
Et Aussi les Cookies : $request->cookies->get(‘nom_variable’)
Pour les sessions :
$session = $this->get('session');
$session->get('user_id')
18
![Page 19: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/19.jpg)
19
La configuration : Système d’annotation
Plusieurs possibilité : yml, xml et annotation
L’annotation est le moyen le plus rapide et simple pour des projets de petite et moyenne taille
Comment ça marche ?
Commentaire du genre :@MotCles(Valeur2, Valeur2…)
![Page 20: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/20.jpg)
20
Les Routes en Symfony
Les routes en Symfony2 déterminent quel contrôleur exécuter en fonction de l’URL appelé par l’internaute
Annotation à ajouter au niveau des classes PHP des contrôleurs
@Route([URL], [Param 1], [Param 2]… )
Important : n’oublier pas d’appeler la classe Route par le namespace suivant
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route
![Page 21: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/21.jpg)
21
Les routes : Règles 1/6
Declarer une route simple pour un contrôleur
![Page 22: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/22.jpg)
22
Les routes : Règles 2/6
Pour chaque route on peut definer :
1. /{nom_variable} à passer en paramètre de la méthode
2. requierements={“nom_variable” = [expression régulière]}
3. defaults={“nom_variable” = “”valeur par defaut}
![Page 23: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/23.jpg)
23
Les routes : Règles 3/6 Il est aussi possible de définir plusieurs URL’s au même
controleur
![Page 24: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/24.jpg)
24
Les routes : Règles 4/6
Important : Pour que Symfony prend en compte les annotations de routes définis dans le contrôleur, il faut l’activer en ajouter les lignes suivantes au fichier de config “app/config/routing.yml”
Par fichier :
Par répertoire
![Page 25: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/25.jpg)
25
Les routes : Règles 5/6 Définir pour chaque contrôleur un prefix d’url
Lors de l’activation
Au niveau du fichier
![Page 26: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/26.jpg)
26
Les routes : Règles 6/6 Définir un nom pour chaque route , cela peut être
utiliser pour générer des liens dans les vues
Chaque route peut correspondre à une methode GET ou POST ou les deux
![Page 27: Presentation Symfony2](https://reader033.fdocuments.net/reader033/viewer/2022061123/547529f3b4af9fa90a8b58d7/html5/thumbnails/27.jpg)
27
Symfony Possède un système de cache
Pensez à vider le cache, des fois il suffit de le faire pour votre code fonctionne correctement :
php app/console cache:clear