PHP では、元の質問で指定された方法で関数を上書きすることはできません。ただし、同様の結果を達成する別の方法もあります。
元のアプローチ:
function ihatefooexamples() { return "boo-foo!"; }; // Redeclaration if ($_GET['foolevel'] == 10) { function ihatefooexamples() { return "really boo-foo"; }; };
PHP では同じ関数を再定義できないため、このアプローチは実行できません。名前とパラメータ。
OOP を使用した代替アプローチ:
オブジェクト指向プログラミング (OOP) によるポリモーフィズムがより良い解決策です。
インターフェイスを作成するFooable と、それを実装する 2 つのクラス Foo および FooBar。
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"; } }
foolevel に基づいて適切なクラスをインスタンス化し、ihatefooexamples メソッドを呼び出します。
$foo = new Foo(); if (10 == $_GET['foolevel']) { $foo = new FooBar(); } echo $foo->ihatefooexamples();
この OOP アプローチを使用することで、関数名の一貫性を維持しながら、入力パラメーターに基づいて ihatefooexamples 関数の動作を動的に変更できます。
以上がこのように PHP の関数を上書きできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。