我现在已经使用phpsh一段时间了,过去它运行得很好。但它的命名空间支持仍然不是很好,这可能非常令人沮丧。
像\Somespace\Someclass::someStaticFunction()
之类的东西在没有禁用检查方法是否存在的情况下不起作用,这会导致重置环境的错别字频繁出现致命错误。
有多个PHP REPL,包括PHP内置shell(php -a
),使用起来很糟糕。
有没有人知道一个替代方案或者一个具有正确名称空间支持的phpsh-fork?或者也许是一个我忽略的简单配置修复......
一个例子:
此测试文件:
<?
namespace testing;
function echoSome(){
echo 'Something';
}
\testing\echoSome();
在phpsh中生成此输出(如预期的那样)
php> include '/path/test.php';
Something
php>
但是再次尝试同样的呼叫不起作用:
php> \testing\echoSome();
Not executing input: Possible call to undefined function echoSome()
See /etc/phpsh/config.sample to disable UndefinedFunctionCheck.
没有名称空间,该功能仍然可用:
<?
function echoSome(){
echo 'Something';
}
echoSome();
在phpsh中:
php> include '/path/test.php';
Something
并且通话仍然有效:
php> echoSome();
Something
答案 0 :(得分:3)
我发现使用eval是一个很好的解决方法:
php> = eval('return \testing\echoSome();')
是的,这是一个黑客,但一个方便的。 :)
答案 1 :(得分:2)
有几种选择。
首先,您可能想尝试使用PHP for PHP 5.4。据称,交互式控制台已经大大改进了5.4。他们可能会同意你说他们内置的shell使用起来很糟糕:)我所知道的是它已被“翻新”。
有一些替代方案,例如phpa,似乎已经过时,并运行最新的git version of phpsh。他们知道名称空间问题,从他们的“问题”页面判断,因此他们可能会尝试改进它。由于它是开源的,你可以让某人为你修复它,或者自己修复它; - )
我认为,总的来说,您面临的是普通PHP CLI或phpsh之间的选择。没有任何替代方案足够成熟,可以做任何可以做的事情,而且大多数替代方案都更加过时(即有php_repl,已经更新3年前,而不是phpsh的2年。) / p> 祝你好运