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.

Git, Version, Github, Mac - Utiliser Git, les premiers pas

Symfony2 fonctionne sur MAMP
Git, Version, Github, Mac - Utiliser Git, les premiers pas

Building PHP Applications with Symfony, CakePHP, and Zend Framework

Building PHP Applications with Symfony, CakePHP, and Zend Framework

Une somme et un comparatif très instructif sur les frameworks PHP du marché que sont : Symfony, CakePHP, et Zend. C'est rare d'avoir une vue d'ensemble des 3 frameworks afin de pouvoir faire un arbitrage sur celui à choisir pour créer une application Web. Le livre va vraiment dans le détail de chaque framework en passant en revue un très large éventail de sujets : installation, configuration de fonctionnalités avancées telles que AJAX, Web Services et les tests automatisés. Un chapeau bas et un "dziękuję bardzo" aux trois auteurs polonais Bartosz Porebski, Karol Przystalski, Leszek Nowak pour ce travail exceptionnel.

Genre(s) : , , , , , , , , , ,
Auteur(s) : , ,
Edition(s) : , , , ,

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.

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 principe convention over configuration qui explique cette obligation dans la nomenclature afin de faciliter le Scaffolding. Un exemple vous est donné dans la console Acme/Bundle/BlogBundle. Nous allons opter pour un nom beaucoup plus fantaisiste tout en respectant la nomenclature Bruno/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
Git, Version, Github, Mac - Utiliser Git, les premiers pas

Création d’un app sous Symfony2
Git, Version, Github, Mac - Utiliser Git, les premiers pas

Création d’un app sous Symfony2
Git, Version, Github, Mac - Utiliser Git, les premiers pas

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