您可能會遇到需要修改類別或其方法而沒有典型繼承選項的情況。以下面的類別為例:
class third_party_library { function buggy_function() { return 'bad result'; } function other_functions(){ return 'blah'; } }
您可能希望用更理想的實作來取代 buggy_function() 方法,但透過繼承來這樣做是不可行的。 PHP 本身不支援猴子修補,這允許您在定義類別後對其進行修改。
一個潛在的解決方案是使用 PECL runkit 函式庫,它提供了 runkit_method_redefine() 函數。這允許您透過評估程式碼字串來修改方法:
runkit_method_redefine('third_party_library', 'buggy_function', '', 'return \'good result\'' );
但是,這種方法有缺點。透過字串求值修改程式碼可能很危險,而且偵錯可能具有挑戰性。
另一個選擇是考慮在類別中新增函數,而不是修改現有函數。在某些語言中,例如 C#,可以使用“部分類別”。但是,請務必注意,由於您的特定情況下的框架限制,這可能不可行。
以上是PHP 中可以不繼承修改類別方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!