PHP:有没有一种方法来执行一个函数/方法时,没有方法被调用的对象?



我有一个对象,在它的data属性中存储另一个subject。data属性中的subObject可以通过如下的魔法方法调用:$object->subObject。subObject还有一个data属性,其中存储了它的值。目前,当我执行$object->subObject时,它会自动返回存储在subObject的data属性中的值。所以基本上整个结构看起来像这样:

object [
data => subObject [
data => 'value'
]
]
$object->subObject //returns 'value'
到目前为止,我希望这是可以理解的。现在我想有能力在子对象:$object->subObject->someFunc()上执行someFunc()。这通常不是问题。但我还想要,如果我根本不调用subObject上的方法,它的data属性的值会返回(value)是否有可能在一个对象/类中找出一个方法是否被调用并采取相应的行动?

这不可能。当您访问一个值时,无论要对该值做什么,您都会得到相同的结果。它不会因为你是否要在它上面调用另一个方法而有所不同

记住

$object->subObject->someFunc();

本质上等同于

$temp = $object->subObject;
$temp->someFunc();

如果$object->subObject返回'value',则第一行将设置$temp = 'value',然后$temp->someFunc()将不起作用。

最新更新