Symfony2, PHP, Framework – Introduction à Symfony 2, les commandes essentielles pour créer et supprimer un Bundle
Pour essayer de comprendre le fonctionnement d’un framework et modèle MVC qui sous-tend la logique de Symfony, rien de mieux que de raconter une “user story” selon un principe agile bien connu.
On va procéder par analogie avec ce que l’on ferait si on passait commande dans une Boucherie ! Notre utilisateur va ainsi rentrer dans une Boucherie (Bundle), va arpenter le Magasin (Controller) et dans la vitrine (View), choisir un morceau (Value) ! On a donc l’enchaînement logique grosses-mailles du Bundle si cher à Synfony2.
Avant de faire nos emplettes, dans cette nouvelle boucherie, il faut au moins s’assurer qu’elle peut exister, en clair que l’on la possibilité de faire fonctionner Symfony2 en local, en l’espèce sur un Mac à l’aide de MAMP.
Le bonne environnement en local ou Comment Mettre à Jour MAMP
Pour faire fonctionner Symfony
en local il vous faudra mettre à jour MAMP
.
Il faut donc garder les paramètres éventuels que vous avez pu mettre.
Port APACHE 80
Port MySQL 3306
Version de php 5.5.3
Inutile d’avoir de sélectionner un système de cache pour le moment tout au moins genre APC
par exemple, symphony pourvoie à vos besoins.
Bien conserver les répertoires /Applications/MAMP/db/
et Applications/MAMP/htdocs/
et tout devrait bien se passer apres la mise à jour de MAMP.
Les erreurs éventuels à corriger
Des erreurs qui ne sont pas véritablement effectives mais bon qui peuvent expliquer un éventuel dysfonctionnement de symfony.
Dans /Applications/MAMP/htdocs/symfony/Symfony/web/app.php
/* Change 23/11/13 */ $kernel = new AppKernel('prod', false); // $kernel = new AppKernel('prod', true); |
Dans /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
pour la version de php 5.5.3
- Mettre la valeur short_open_tag à “Off”, elle est sur “On” par défaut
- Mettre la valeur magic_quotes_gpc à “Off”
Toutefois, si vous parvenez à afficher cette adresse en local, c’est gagné.
http://127.0.0.1/sf_framework/Symfony/web/app_dev.php
On peut désormais passer aux choses sérieuses. Pour mémoire quelques captures des écrans.
Symfony2 fonctionne sur MAMP
RoR, Symfony même combat…
RoR et Symfony ont beaucoup en commun. Cela n’a rien d’étonnant en raison dde la parenté MVC entre , pour ceux d’entre vous qui aurait fait du RoR, c’est assez étonnant. Le concept de scaffolding
est tout entier présent dans symfony2. A n’en pas douter l’association avec Drupal peut se révéler dévastatrice puisque c’est un tout-en-un, un framework très puissant, très productiviste et un CMS complexe mais donc éminemment souple. Sans doute que l’association des 2 peut créer des étincelles ou bien se révéler être une gorgone !
On avait déjà un peu tourné autour de la question dans des articles précédents.
- Framework PHP – Quel framework choisir entre CodeIgniter, CakePHP, Symfony, Zend…
- Kohana, CodeIgniter, Framework PHP – Un comparatif entre Kohana et CodeIgniter
L’essentiel pour créer un Bundle
Voici l’essentiel des commandes pour créer un Bundle
, la fameux Hello World
. On va changer aussi le contenu des fichiers pour être conforme à notre “user-story”.
Voilà en vrac le contenu de tout les fichiers ainsi que la marche à suivre.
cd /Applications/MAMP/htdocs/sf_framework/Symfony/ |
php app/console generate:bundle |
Le nom du bundle est fait à l’aide d’un peu de
CamelCasing
, histoire de pouvoir générer l’arborescence des répertoires. C’est le respect du principeconvention over configuration
qui explique cette obligation dans la nomenclature afin de faciliter leScaffolding
. Un exemple vous est donné dans la consoleAcme/Bundle/BlogBundle
. Nous allons opter pour un nom beaucoup plus fantaisiste tout en respectant la nomenclatureBruno/Bundle/BoucherieBundle
Le nom de notre Bundle
Bruno/Bundle/BoucherieBundle |
Dans AppKernel.php
, cela ajoute une ligne
new Bruno\Bundle\BoucherieBundle\BrunoBoucherieBundle(), |
Dans routing.yml
, cela ajoute une ligne
bruno_boucherie: resource: "@BrunoBoucherieBundle/Resources/config/routing.yml" prefix: / |
On a bien notre arborescence
/Applications/MAMP/htdocs/sf_framework/Symfony/src/Bruno/Bundle/BoucherieBundle
On va donc maintenant modifier les éléments au sein de ce répertoire pour obnetnir cette vue.
http://127.0.0.1/sf_framework/Symfony/web/app_dev.php/vitrine/veau
La vue vitrine.html.twig
dans /Bruno/Bundle/BoucherieBundle/Resources/views/Magasin/
<b>Bonjour {{ morceau }},</b> <br> <code>Class -> BrunoBoucherieBundle</code><br> <code>Controller -> MagasinController</code><br> <code>View -> vitrine.html.twig</code><br> <code>Value -> morceau</code><br> |
Le fichier routing.yml
dans /Bruno/Bundle/BoucherieBundle/Resources/config/
ma_vitrine_de_boucherie: pattern: /vitrine/{morceau} defaults: { _controller: BrunoBoucherieBundle:Magasin:vitrine } |
Le fichier MagasinController.php
dans /Bruno/Bundle/BoucherieBundle/Controller/
namespace Bruno\Bundle\BoucherieBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class MagasinController extends Controller { public function vitrineAction($morceau) { return $this->render('BrunoBoucherieBundle:Magasin:vitrine.html.twig', array('morceau' => $morceau)); } } |
L’essentiel pour supprimer un Bundle
Supprimer le répertoire du Bundle dans le dossier /Applications/MAMP/htdocs/sf_framework/Symfony/src/
rm -r [nom_du_repertoire] |
Supprimer la ligne concernant le Bundle dans le fichier /Applications/MAMP/htdocs/sf_framework/Symfony/app/AppKernel.php
Supprimer la ligne concernant le Bundle dans le fichier /Applications/MAMP/htdocs/sf_framework/Symfony/app/config/routing.yml
Création d’un app sous Symfony2
Création d’un app sous Symfony2
Création d’un app sous Symfony2
Supprimer une app sous symfony
Il faut nettoyer le fichier routing.yml
et le fichier AppKernel.php
. On aura donc à enlever les ligne suivantes après avoir supprimer le répertoire dans /Applications/MAMP/htdocs/sf_framework/Symfony/src/
Dans /Applications/MAMP/htdocs/sf_framework/Symfony/config/routing.yml
bruno_boucherie: resource: "@BrunoBoucherieBundle/Resources/config/routing.yml" prefix: / |
Dans /Applications/MAMP/htdocs/sf_framework/Symfony/app/AppKernel.php
.
new Bruno\Bundle\BoucherieBundle\BrunoBoucherieBundle(), |
Conclusion : Symfony2 est un framework éminemment productiviste. On peut s’en servir pour “mocker” et surtout développer des app web, de manière très rapide même si la framework parait un peu lourd au départ. Il est assez aussi opportun de s’y intéresser pour décrocher des contrats sur le marché du développement en France tout au moins. En effet, c’est un framewok massivement adopté par les poids lourds du développement donc les compétences sont donc très recherchées plus peut-être que des compétences sur CakePHP ou Zend.
En savoir plus
- Symfony2 Tutorial 3 – How to create a bundle in Symfony 2
http://www.youtube.com/watch?v=PONJajuH8P4 - Creating Pages in Symfony2
http://symfony.com/doc/current/book/page_creation.html - Setting Up Symfony 2 On Mac Os X Lion With Mamp
http://skripted.ruhoh.com/2012/06/16/setting-up-symfony-2-on-mac-os-x-lion-with-mamp/ - Installer Symfony 2 pour développer sur Mac OS X
http://www.johann-roche.com/2012/12/07/installer-symfony-2-pour-developper-sur-mac-os-x/ - Installer Symfony 2 pour développer sur Mac OS X
http://blog.servergrove.com/2012/06/01/setting-up-a-symfony2-project-using-mamp/