猿问

有大佬遇到过这个问题吗:请教一个php框架中魔术常量__callStatic()的作用?怎么回事哈啊?

像__construct()这个很好理解,对象创建完成后,第一个被对象自动调用的方法.很明显可以感受到可以用于初始化等方面.
但是__callStatic(),在对象中调用一个不可访问方法时,__call()会被调用。在静态上下文中调用一个不可访问方法时,__callStatic()会被调用.如下代码展示的,感觉好像"你传入什么,最后就输出或返回什么,这不类似于赋值吗?".
tp5中,比如用来操作数据库的Db类相关代码经常用到__callStatic()和__call(),在对象中调用一个不可访问方法时,就怎么怎么样......,这种设计有什么精妙之处呢?
classPerson{
publicfunction__call($name,$arguments){
var_dump($name,$arguments);
echo"
";
}
publicstaticfunction__callStatic($name,$arguments){
var_dump($name,$arguments);
}
}
$p1=newPerson();
$p1->inexistent_method(1,2,6);//调用不存在的普通方法
Person::inexistent_static_method(8,9);//调用不存在的静态方法
结果如下
string(17)"inexistent_method"array(3){[0]=>int(1)[1]=>int(2)[2]=>int(6)}
string(23)"nexistent_static_method"array(2){[0]=>int(8)[1]=>int(9)}
吃鸡游戏
浏览 483回答 2
2回答

一只名叫tom的猫

用途很多,就看你去怎么合理利用它,比如Facade。亦或者怎样用PHP来实现枚举?-开发中的一些奇技淫巧-SegmentFault思否再或者变量保护,批量赋值,自定义错误信息,等等,更多有趣的应用。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答