为了账号安全,请及时绑定邮箱和手机立即绑定

关于 PHP 的 __callStatic 方法的一个大坑

关于 PHP 的 __callStatic 方法的一个大坑

PHP
智慧大石 2019-03-12 04:02:25
直接上代码: class A{ public static function __callStatic($name, $arguments) { echo $name.'静态方法不存在!'; } public function test() { echo 'test 方法'; } } A::test(); 上面代码输出:test 方法 结果调用了 test()方法,并没有执行__callStatic()方法,我的本意是想用__callStatic()处理A::test()这种错误的调用情况,这种情况该怎么处理呢?
查看完整描述

4 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

修改 public 修饰符的权限

查看完整回答
反对 回复 2019-03-18
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

A::test()是静态调用,但你的test()不是static,语法上就出错了。
另外,__callStatic()是说,当你调用一个不可访问的static方法时,自动触发。何为不可访问?你类外调用没有权限或者不存在。
类似的,__call()是说,当你调用一个不可访问的普通方法时,自动触发。
因此,你要实现_callStatic()的触发,得确保类外是静态调用一个不可访问的静态方法。

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 591 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信