En python avec le framework django ou en ruby avec rails on dispose d’un shell interactif qui permet de jouer avec ses modèles, la base de donnée, etc. Cette possibilité manquant dans Symfony2. C’est pourquoi j’ai développé une petite lib basée sur psysh qui permet d’avoir un shell interactif php avec l’application bootée dedans.
Le projet est disponible ici. L’installastion est simple :
composer require-dev luxifer/symfony-repl
Ou en le rajoutant à la main dans son composer.json
et en lançant un composer update
:
{
"require-dev": {
"luxifer/symfony-repl": "dev-master"
}
}
Ensuite à la racine de son projet Symfony, il suffit de lancer bin/symfony-repl
et le shell se lance.
Psy Shell v0.1.8 (PHP 5.5.11 — cli) by Justin Hileman
>>>
Depuis ce shell on a la variable $kernel
qui est exposée et qui est le kernel Symfony. Depuis ce shell on peut lancer $kernel->getContainer()
pour accéder au conteneur de service symfony et donc ainsi accéder à tous les services définis. Tout le code qu’on a écrit dans le dossier src/
est disponible et on peut donc facilement instancier un modèle comme Acme\UserBundle\Entity\User
.
Cette petite lib va instancier un kernel Symfony avec l’environnement de dev
, c’est une sorte de proof of concept, par la suite je vais rajouter des fonctionnalités pour changer l’environnement ou même le fichier de bootstrap de Symfony.
Happy development!
Si vous trouvez une typo, n'hésitez pas à forker et éditer cet article. Merci beaucoup !
“Shell interactif Symfony2” de Florent Viel est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International.