您可能会遇到需要修改类或其方法而没有典型继承选项的情况。以下面的类为例:
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