有时我需要执行祖父方法(即绕过父方法),我知道这是代码异味,但有时我无法更改其他类(框架、库等)。
在 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 的上下文中调用我的祖父母方法。