繁体   English   中英

REPL / interactive shell是否支持PHP 5.3?

[英]REPL/interactive shell with proper PHP 5.3 support?

我一直在使用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

我发现使用eval是一个很好的解决方法:

php> = eval('return \testing\echoSome();')

是的,这是一个黑客,但一个方便的。 :)

有几种选择。

首先,您可能想尝试使用PHP for PHP 5.4。 据称,交互式控制台已经大大改进了5.4。 他们可能同意你的看法,他们内置的外壳使用起来很糟糕:)我所知道的是它已被“翻新”了。

有一些替代品,比如phpa ,看起来已经过时了,运行最新的git版本的phpsh 他们知道名称空间问题,从他们的“问题”页面判断,因此他们可能会尝试改进它。 由于它是开源的,你可以让某人为你修复它,或者自己修复它;-)

我认为,总体而言,您面临的是普通PHP CLI或phpsh之间的选择。 没有任何替代方案足够成熟,可以做任何可以做的事情,而且大多数替代方案甚至更加过时(即,有php_repl ,已经更新3年前,而不是phpsh的2年)。

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM