問題出現了,“你能通過重新聲明來覆蓋PHP 中的函數嗎?就像在這個例子中一樣?”
function ihatefooexamples(){ return "boo-foo!"; } if ($_GET['foolevel'] == 10){ function ihatefooexamples(){ return "really boo-foo"; } }
雖然這種方法看起來合乎邏輯,但它實際上並不會導致PHP 中的函數覆蓋。沒有直接的方法可以用不同的實作來重新定義函數。
PHP 的物件導向程式設計功能透過多態性提供了替代解決方案。透過定義具有通用方法簽署的介面並實作多個實作此介面的類,您可以根據所使用的類別的實例動態變更方法的行為。
考慮以下範例:
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中文網其他相關文章!