He estado usando phpsh desde hace un tiempo, y ha funcionado bien en el pasado. Pero su soporte de espacio de nombres todavía no es muy bueno y esto puede ser bastante frustrante.REPL/caparazón interactivo con soporte adecuado de PHP 5.3?
Cosas como \Somespace\Someclass::someStaticFunction()
no funcionan sin deshabilitar la comprobación de si existe o no un método, lo que conduce a frecuentes errores fatales en errores tipográficos que restablecen su entorno.
hay múltiples REPLs PHP por ahí, incluyendo el PHP incorporado shell (php -a
), que es horrible de usar.
¿Alguien sabe de una alternativa o tal vez un phpsh-tenedor con el soporte adecuado espacio de nombres? O tal vez una solución fácil configuración he pasado por alto ...
un ejemplo:
Este testfile:
<?
namespace testing;
function echoSome(){
echo 'Something';
}
\testing\echoSome();
produce esta salida en phpsh (como se esperaba)
php> include '/path/test.php';
Something
php>
Pero tratar de la misma llamada de nuevo no funciona:
php> \testing\echoSome();
Not executing input: Possible call to undefined function echoSome()
See /etc/phpsh/config.sample to disable UndefinedFunctionCheck.
sin espacios de nombres de la función sigue estando disponible:
<?
function echoSome(){
echo 'Something';
}
echoSome();
en phpsh:
php> include '/path/test.php';
Something
y la llamada sigue funcionando:
php> echoSome();
Something
¿Podría describir con un poco más de detalle lo que le falta al soporte del espacio de nombres de phpsh? – Doa
Agregaré un fragmento de lo que encuentro confuso, pero ¿quizás @michiel puede aclarar algunos también? – Nanne
Sí, este es un ejemplo perfecto de lo que quise decir. Aparte de \ someNameSpace \ someFunction(); someNamespace \ SomeClass :: someFunction() tampoco funciona. Iirc también presenta problemas con las funciones anónimas (otra función de 5.3), pero mi cerebro privado de cafeína no puede recordarlo en este momento. – Marlies