您可能會遇到需要修改類別或其方法而沒有典型繼承選項的情況。以下面的類別為例:
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#,可以使用“部分類別”。但是,需要注意的是,由於您的特定情況的框架限制,這可能不可行。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3