Używam już od pewnego czasu phpsh, a to działało świetnie w przeszłości. Ale obsługa przestrzeni nazw nadal nie jest bardzo dobra i może to być dość frustrujące.REPL/interaktywna powłoka z właściwą obsługą PHP 5.3?
Rzeczy takie jak \Somespace\Someclass::someStaticFunction()
nie działają bez wyłączania sprawdzania, czy istnieje metoda, co prowadzi do częstych błędów krytycznych na literach, które resetują środowisko.
Istnieje wiele REPL-ów PHP, w tym wbudowana w PHP powłoka (php -a
), która jest okropna w użyciu.
Czy ktoś wie o alternatywnej lub może phpsh-fork z odpowiednią obsługą przestrzeni nazw? A może łatwo naprawić konfiguracja Mam pomijane ...
przykład:
Ten testfile:
<?
namespace testing;
function echoSome(){
echo 'Something';
}
\testing\echoSome();
produkuje to wyjście w phpsh (zgodnie z oczekiwaniami)
php> include '/path/test.php';
Something
php>
Ale ponowne wykonanie tego samego połączenia nie działa:
php> \testing\echoSome();
Not executing input: Possible call to undefined function echoSome()
See /etc/phpsh/config.sample to disable UndefinedFunctionCheck.
bez nazw funkcja jest nadal dostępna:
<?
function echoSome(){
echo 'Something';
}
echoSome();
w phpsh:
php> include '/path/test.php';
Something
i wywołanie nadal działa:
php> echoSome();
Something
Czy mógłbyś opisać nieco bardziej szczegółowo, czego brakuje w obsłudze przestrzeni nazw phpsh? – Doa
Dodam fragment tego, co uważam za mylące, ale może @michiel też może wyjaśnić? – Nanne
Tak, jest to doskonały przykład tego, co miałem na myśli. Oprócz \ someNameSpace \ someFunction(); someNamespace \ SomeClass :: someFunction() również nie działa. Iirc są również problemy z anonimowymi funkcjami (kolejna funkcja 5.3), ale mój mózg pozbawiony kofeiny nie może teraz pamiętać. – Marlies