質問は、「ihatefooexamples()」のような関数を宣言し、if 条件ブロック内で「再宣言」できるかどうかを中心に展開します。 。基本的に、その目的は関数の動作を上書きすることです。
残念ながら、この特定のクエリに対する答えは「いいえ」です。 PHP は、質問で提案されている方法での関数の上書きをサポートしていません。
ただし、PHP は、オブジェクト指向プログラミング (OOP) を通じてポリモーフィズムとして知られる強力なメカニズムを提供します。同様の機能を実現します。次のコードを考えてみましょう:
interface Fooable { public function ihatefooexamples(); } class Foo implements Fooable { public function ihatefooexamples() { return "boo-foo!"; } } class FooBar implements Fooable { public function ihatefooexamples() { return "really boo-foo"; } } $foo = new Foo(); if (10 == $_GET['foolevel']) { $foo = new FooBar(); } echo $foo->ihatefooexamples();
このコードでは:
この手法を使用すると、関数のようなメソッドの動作を切り替えることで動的に変更できます。実行時に異なる実装間で相互に変換し、関数を上書きするのと同様の効果を効果的に達成します。
以上がPHP は他の言語と同様に関数を上書きできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。