Oftmals steht man vor den Problem, dass man einfach nur den Rückgabewerte einer Servicemethode oder das Ergebnis einer PHP-Funktion wie bspw. preg_match_all
wissen möchte. Um PHP-Funktionen zu evaluieren kann man auf Webdienste zurückgreifen oder die native PHP-Konsole nutzen. Um Symfony-Services aufzurufen bleiben einem nur Commands oder Controller. Alles in allem nicht optimal und womit wirklich arbeiten möchte. Seit Boris PHP um eine brauchbare REPL erweitert hat kann man beide Probleme auf einmal lösen. Boris liefert eine schöne Konsole und die Grundlage um auch Symfony-Services direkt in der Konsole auszuführen.
Boris installieren
Um nur Boris projektunabhängig/global zu installieren sind nur ein paar Zeilen nötig
curl -L -O https://github.com/borisrepl/boris/releases/download/v1.0.8/boris.phar chmod +x boris.phar sudo mv boris.phar /usr/local/bin/boris
Für Symfony-Projekte ist ähnlich einfach:
Dependency laden composer require floriansemm/boris-bundle:"1.*"
und im Kernel registrieren
$bundles = array(
new Zayass\BorisBundle\ZayassBorisBundle(),
);
Nutzung
Boris an sich wird über ./boris aufgerufen und genutzt werden.
[1] boris> $var1 = 1; // 1 [2] boris> $var2 = 2; // 2 [3] boris> $var1 + $var2; // 3 [4] boris>
In einem Symfony-Projekt wird Boris mit ./app/console repl
aufgerufen. Anschließend ist jeder Symfony-Service in der Konsole verfügbar:
[1] Symfony-2.8.0 - app/dev/debug> $postRepository = $container->get('doctrine')->getRepository('AcmeDemoBundle:Post');
[2] Symfony-2.8.0 - app/dev/debug> $postRepository->find('1');
// object(Acme\DemoBundle\Entity\Post)(
//
// )