3

Javascriptがこの可能性を提供する方法と同様に、PHPで無名関数を実行するための推奨される方法は何ですか?

Javascript:

(function(){ console.log('Hello!'); })();

PHPで同じことを試みると、パラメータの開き角かっこで構文エラーが発生します。call_user_func()を「誤用」することで、この問題を回避する方法を見つけました。

PHP:

call_user_func(function(){ echo "Hello!"; });

しかし、PHPのドキュメント更新:ドイツ語版のドキュメント)では、call_user_func()の最初のパラメーターは文字列である必要があると明示的に記載されています...したがって、私のソリューションが正しく機能するかどうかはわかりません(ただし、瞬間)。

このソリューションの背後にある目的は、JavaScriptで同じように実行する理由と同様に、追加された機能のためにグローバル名前空間を汚染しないことです。このスクリプトは、サーバー全体のすべてのスクリプトに自動的に追加され、グローバル名前空間とグローバルスコープで非表示にする必要があります。見えないようにするためのものではありません。名前空間にシンボルを入れないでください。

4

2 に答える 2

4

ただし、PHPのドキュメントには、call_user_func()の最初のパラメーターは文字列である必要があると明示的に記載されています。

いいえ、そうではありません。

mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )

最初のパラメータはタイプcallableなので、コードは完全に有効です:)

于 2012-07-31T17:43:53.837 に答える
2

あなたの解決策は適切です。の最初の引数は、クロージャーを含む型であるcallablecall_user_funcでなければなりません。

于 2012-07-31T17:44:13.010 に答える