开发者社区> 问答> 正文

请教大神php非静态方法如何实现静态调用?

最近看laravel4的代码,发现其中Config类(Repository)中的set和get方法并不是静态方法,但调用时却可以使用Config::get('app.url'), Config::set('app.url', 'http://xxx.xx')等
screenshot
screenshot
请问这个是如何实现的?

展开
收起
落地花开啦 2016-06-16 18:16:03 2091 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    使用了拦截器__callStatic,当静态方式调用一个不存在的方法,会被这个方法拦截,第一个参数是静态调用方法名,第二个参数是一个包含调用方法参数的数组。他在拦截器方法里面做了处理,比如使用了call_user_func去自动加载对应的方法。

    看你贴的源码里面还有句延迟静态绑定,不过不重要,重要的就是这个拦截器。

    2019-07-17 19:41:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载