我已经使用phpsh已有一段时间了,过去它的效果很好。但是它对 namespace 的支持仍然不是很好,这可能会令人沮丧。

如果不禁用检查方法是否存在,就无法使用\Somespace\Someclass::someStaticFunction()之类的东西,这会导致错别字频繁出现致命错误,从而重置您的环境。

那里有多个PHP REPL,包括PHP内置的shell(php -a),使用起来很可怕。

有谁知 Prop 有适当 namespace 支持的替代方案或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

最佳答案

有两种选择。

首先,您可能想要尝试PHP 5.4的CLI。据称,交互式控制台已针对5.4进行了重大改进。他们可能同意您的观点,认为内置 shell 使用起来很糟糕:)我所知道的是它已经“翻新”了。

有一些替代方法,例如phpa,它似乎已经过时了,并运行最新的git version of phpsh。从他们的“问题”页面判断,他们知道 namespace 问题,因此他们可能会尝试改善此问题。由于它是开源的,因此您可以找人为您修复它,或者自己修复;-)

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

祝你好运

10-04 23:15