在 PHP 中,不可能按照原始問題指定的方式覆蓋函數。然而,還有其他方法可以達到類似的結果。
原始方法:
function ihatefooexamples() { return "boo-foo!"; }; // Redeclaration if ($_GET['foolevel'] == 10) { function ihatefooexamples() { return "really boo-foo"; }; };
這種方法不可行,因為 PHP 不允許使用相同的函數重新定義函數名稱和參數。
使用的替代方法OOP:
透過物件導向程式設計(OOP)實現多態性是更好的解決方案。
建立一個介面 Fooable 和兩個實作它的類別 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中文網其他相關文章!