如何在不出现E_STRICT错误的情况下调用祖父母方法?
2022-08-30 22:33:15
有时我需要执行祖父母方法(即绕过父方法),我知道这是代码气味,但有时我无法更改其他类(框架,库等)。
在PHP中,我们可以用这样的东西来做到这一点:
call_user_func(array(get_parent_class(get_parent_class($childObject)), 'grandParentMethod'));
问题是,如果您启用了E_STRICT错误,您将收到如下错误:
严格的标准:非静态方法 GrandParent::grandParentMethod() 不应该在 ...
我只找到了一个解决方案(没有删除E_STRICT),它只是添加以抑制错误。@
但那真的很丑陋,有人知道更好的解决方案吗?
谢谢!PS:我无法实例化如下新对象:
$grandparent = get_parent_class(get_parent_class($son));
$gp= new $grandparent;
$gp->grandParentMethod
因为我需要在$son的上下文中调用我的祖父母方法。