PHP:调用__call而不是__callStatic

时间:2016-09-28 12:31:06

标签: php

我正在开发自定义ORM,这是一个简化示例来演示此问题:

__call

那么为什么在Foo内部调用相同的方法会触发Foo2并在__callStatic内触发{{1}}?

1 个答案:

答案 0 :(得分:1)

这是因为在第一次调用中,您返回Null,在对象上下文中。因此,它正在调用__call()而不是__callStatic()

编辑:在第一种情况下,Foo :: getBar()在类Foo的实例范围内调用,因此Foo :: getBar()实际上与(实例)相同 - > getBar()当然不是静态调用。

EDIT2:刚刚找到关于您的问题的问题+答案:Why does PHP prefer __call() to __callStatic()?