在其他面向對象的語言如Java,我們可以覆蓋功能,可以使用關鍵字/註解像implements
,@override
等在PHP中重寫?
有沒有辦法在PHP這樣做呢?我的意思是,例如:
class myClass {
public static function reImplmentThis() { //this method should be overriden by user
}
}
我希望用戶自己實現myClass::reImplementThis()
方法。
我如何能做到這一點在PHP?如果有可能,我可以選擇嗎?
我的意思是,如果用戶不實施該方法,我可以指定一個默認方法,或者我可以確定該方法沒有定義(我可以使用method_exists
來做到這一點)嗎?
這正是繼承是。 http://php.net/manual/en/language.oop5.inheritance.php –
一般來說,我會做非靜態的,然後用戶可以擴展myClass - 選擇是否重新定義'reImplmentThis( )'。如果您的默認實現可接受,則不需要測試用戶實現的存在。 – halfer
您可以使用抽象類來擴展(如halfer所說)和一個接口類(http://www.killerphp.com/articles/php-interfaces/),以確保最終的類至少具有函數你指定的。我只是剛剛學習這些(接口),我可能是錯的,但從我讀過的內容來看,似乎是得到它們的原因。 – qooplmao