Podczas testowania jakiegoś projektu zapewne wielokrotnie zdarzało wam się wkurzać, że nie możecie szybko i sprawnie przetestować metod w projekcie. Jakaś nowa libka, algorytm i zaraz kombinowanie, wrzucanie do osobnego pliku lub pisanie testów tylko po to, żeby sprawdzić czy dobrze zrobiliśmy regexp.
A gdyby tak... mieć interfejs CLI do takich zabaw? Taki interaktywny? Hmm?
Mając ten sam problem postanowiłem znaleźć rozwiązanie. Facebookowi goście odwalili kawał dobrej roboty pisząc phpsh - narzędzie do CLI dla PHP z autodopełnianiem (ctags), zwracaniem wyników itd. Świetna sprawa ;)
Jedyne co trzeba zrobić to doprawić go, żeby działał poprawnie z Kohaną. Jak? Bardzo łatwo - cwaniaki wymyślili przełącznik -c (codebase), który pozwala na ustawienie sobie domyślnego środowiska. Ale najpierw zainstalujmy phpsh: pobieramy archiwum w zip lub tar.gz, rozpakowujemy do wolnego katalogu i odpalamy spod roota:
python setup.py build
python setup.py install
Następnie edytujemy plik /etc/phpsh/rc.php i dopisujemy dodatkowego case:
case 'kohana': exec("ctags -a -R *"); // automatycznie generuje podpowiadanie składni define("SUPPRESS_REQUEST", TRUE); // wyłącza domyślną próbę odpalenia kontrolera require("index.php"); // łapie index.php relatywny do naszej ścieżki ob_end_clean(); // wyłącza buforowanie - inaczej nic byśmy nie dostali break;
Żeby skorzystać z tego cuda wchodzimy pod konsolą do dowolnego katalogu z projektem i odpalamy:
phpsh -c kohana
Voila!
Niestety rzeczywistość nie jest taka piękna i podpowiadanie składni działa co najmniej kiepsko. CTags od którejś wersji stosuje bardzo kiepski parser do PHP i nie da się z tym za bardzo nic zrobić poza patchowaniem programu (od 2009 nie doczekaliśmy się nowszej wersji). Jeśli wymyślę coś genialnego, prawdopodobnie powstanie o tym notka, chwilowo - wracam do pracy :)
Podczas testowania jakiegoś projektu zapewne wielokrotnie zdarzało wam się wkurzać, że nie możecie szybko i sprawnie przetestować metod w projekcie.
Nie, używaliśmy do tego jakiegoś frameworka do testów albo w skrajnych wypadkach rails console :> Oh wait...
pecet
Coś do PHP napisane w Pythonie, jakbym był złośliwy to bym powiedział, że źle to świadczy o PHP :>