問題圍繞著是否可以宣告像「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中文網其他相關文章!