脚本宝典收集整理的这篇文章主要介绍了php – 从非静态方法触发__callStatic()的奇怪行为,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
你有:
class foo { function __call($func,$args) { if ($func == 'bar') echo "non-static __call"; } static function __callStatic($func,$args) { if ($func == 'bar') echo "__callStatic"; } function callMe() { self::bar(); } }
然后你做:
foo::bar() // outputs '__callStatic' as expected. $f = new foo; $f->callMe(); // outputs 'non-static __call',as I did not exPEct.
您会看到,从非静态函数调用的不存在的静态方法会触发__call()而不是__callStatic().我想知道这是否应该像这样工作或者这是一种什么样的错误?
[编辑]
我忘了试试static :: bar();在callMe()但不,它也没有用.
我(我想)理解inhan的评论但仍然……如果我正在调用类本身,而不是实例或对象,我的直接逻辑说它应该触发__callStatic().那好吧.
谢谢你的回答/评论.
以上是脚本宝典为你收集整理的php – 从非静态方法触发__callStatic()的奇怪行为全部内容,希望文章能够帮你解决php – 从非静态方法触发__callStatic()的奇怪行为所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。