php教程,如何理解类的魔术函数__call(),__callStatic()?
发布于 作者:苏南大叔 来源:程序如此灵动~

php
编程语言中,class
类中有一系列的隐藏的魔术方法,本文讨论其中的__call()
和__callStatic()
这两个魔术方法。它们是分别用于什么地方呢?如何触发?如何获得参数?

苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的编程经验文章。本文测试环境:win10
,nginx@1.15.11
,php@8.2.10-nts
。
__call(),访问成员方法
__call($name,$arguments)
,访问一个【不能访问】的成员方法时触发。
测试代码:
输出:
__callStatic(),静态成员方法
__callStatic($name,$arguments)
,访问一个【不能访问】的成员静态方法时触发。
测试代码:
输出:
正确理解:“不能访问”
下面的例子里面,为了禁用__clone()
,设置对应方法为private
。然而private function __clone()
因为无法访问,则会触发public function __call()
,是不是有点意思?
输出:
定义了这个public function __call()
之后,就像在固若金汤的类定义上开了个后门...
相关文章
结束语
很显然,只要外部无法访问到对应的方法,就会触发魔术函数__call()
,__callStatic()
。这种“无法访问”包括:没有定义相关方法,或者权限设置为私有的方法。
愿不愿意查看一下苏南大叔的更多php
经验文章呢?请点击:


