10

私はしばらくの間phpshを使用してきましたが、過去にはうまく機能していました。しかし、その名前空間のサポートはまだあまり良くなく、これはかなりイライラする可能性があります。

\Somespace\Someclass::someStaticFunction()メソッドが存在するかどうかのチェックを無効にしないと機能しないなどの問題が発生し、環境をリセットするタイプミスで致命的なエラーが頻繁に発生します。

PHPの組み込みシェル()を含め、複数のPHP REPLがありますが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
4

2 に答える 2

3

evalを使用すると、適切な回避策として機能することがわかりました。

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

ええ、それはハックですが、便利なものです。:)

于 2012-10-17T20:31:15.713 に答える
2

いくつかの選択肢があります。

まず、PHP5.4用のCLIを試してみることをお勧めします。伝えられるところによると、インタラクティブコンソールは5.4で大幅に改善されました。彼らはおそらく、組み込みのシェルを使用するのは恐ろしいことに同意したでしょう:)私が知っているのは、それが「改装された」ということだけです。

かなり時代遅れのように見えるphpaや、最新のgitバージョンのphpsh実行するなど、いくつかの選択肢があります。彼らは「問題」ページから判断して名前空間の問題を認識しているので、それを改善しようとするかもしれません。オープンソースなので、誰かに修正してもらうか、自分で修正してもらうことができます;-)

全体として、通常のPHPCLIまたはphpshのどちらかを選択する必要があると思います。どちらかができることを実行するのに十分成熟した代替手段はなく、ほとんどの代替手段はさらに時代遅れです(つまり、phpshの2年ではなく、3年前に更新されたphp_replがあります)

幸運を

于 2012-07-11T08:51:48.787 に答える