有没有不用典型继承就可以重新定义类或其某些方法的方法?例如:
class third_party_library {
function buggy_function() {
return 'bad result';
}
function other_functions(){
return 'blah';
}
}
我该怎么做才能代替buggy_function()
?显然这是我想做的
class third_party_library redefines third_party_library{
function buggy_function() {
return 'good result';
}
function other_functions(){
return 'blah';
}
}
这是我的两难选择:我更新了破坏我的代码的第三方库。我不想直接修改该库,因为将来的更新可能会再次破坏代码。我正在寻找一种无缝的方法来替换类方法。
我发现这个库说可以做到,但是我很警惕,因为它已经有4年的历史了。
编辑:
我应该澄清的是,由于框架的限制,我不能将类从重命名为third_party_library
to
magical_third_party_library
或其他任何名称。
就我的目的而言,是否可以向类中添加一个函数?我认为您可以在C#中使用“部分类”来完成此操作。
这就是所谓的Monkey修补。但是,PHP没有本机支持。
但是,正如其他人也指出的那样,runkit库可用于增加对该语言的支持,并且是classkit的后继者。并且,尽管它似乎已被其创建者放弃(已经声明它与PHP5.2及更高版本不兼容),但该项目现在似乎有了新的家和维护者。
不过,您runkit_method_redefine
似乎正在寻找它,并且可以/tests/runkit_method_redefine.phpt
在存储库中找到其用法的示例:
runkit_method_redefine('third_party_library', 'buggy_function', '',
'return \'good result\''
);
问题内容: 在JavaScript中使用构造函数创建类时,以后是否可以重新定义类的方法? 例: 现在,我想像这样重新定义: 因此,当我创建另一个时,新方法将被称为: 编辑: 我意识到我可以输入“ Hello”或“Hola”之类的参数来完成不同的输出。我还意识到我可以像这样简单地为p2分配一个新函数: 我只是想知道是否可以重新定义类的方法,以便的新实例将使用新方法。 问题答案: 以后可以重新定义类的
我试图重新定义简单的非静态方法,但遇到了一个例外: 类别: 电话: 上面的类是scala类,但它们编译为标准的java类。 如何正确地重新定义方法?
我有以下问题: 当使用 dplyr 在 group_by() 之后改变数字列时,如果一行只包含一个值,即使用 mutate 命令时的 NaN,则此值将失败。 因此,如果分组列包含数字,它将正确地分类为dbl,但只要一个组只有一个NaN实例,它就会失败,因为dplyr将该组定义为lgl,而所有其他组都是dbl。 我的第一个(也是更一般的问题)是:当使用group_by()时,有没有一种方法告诉dpl
类定义 特殊类定义 模块定义 方法定义 方法定义的嵌套 方法的计算 特殊方法定义 类方法的定义 调用限制 与定义有关的操作 alias undef defined? 类定义 例: class Foo < Super def test : end : end 语法: class 标识符 [`<' superclass ] 表达式.. end 语法:ruby 1.7
问题内容: 我可以在类定义之外创建,甚至可以在另一个模块中创建吗? 问题答案: 是。您可以在类外部定义函数,然后在类主体中将其用作方法: 您也可以在定义一个函数后将其添加到类中: 您可以根据需要在不同的模块中定义函数和类,但是我建议不要在一个模块中定义该类,然后再将其导入另一个模块中并向其中动态添加方法(如第二个示例),因为那样的话d根据是否已导入另一个模块,其行为与类具有令人惊讶的不同。 我要指
homebody能帮我提示一下如何使用byte buddy 1.6.9重新定义静态方法吗? 我试过这个: 我遇到以下异常: 线程“main”java.lang.IllegalStateException中的异常:无法注入已经加载的类型:类委托。来源 谢谢