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

tp5.1中Config的set方法不是静态的了,为什么要这么设计?

下图是tp5.1中的Config类代码片段

https://img1.sycdn.imooc.com//5aeb79500001ea8f09190787.jpg

下图是tp5.0.12中Config类的代码片段,摘自[github](https://github.com/top-think/framework/blob/v5.0.12/library/think/Config.php)

https://img1.sycdn.imooc.com//5aeb7a61000141d207110482.jpg

正在回答

3 回答

因为ThinkPHP5.1多了一个facadel类

门面(Facade)为容器中的类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个facade类。

系统已经为大部分核心类库定义了Facade,所以你可以通过Facade来访问这些系统类,当然也可以为你的应用类库添加静态代理。

只要这个类库继承think\Facade,就可以使用静态方式调用动态类app\common\Test的动态方法,例如上面的代码就可以改成:

// 无需进行实例化 直接以静态方法方式调用hello
echo \app\facade\Test::hello('thinkphp');

结果也会输出 hello,thinkphp。

说的直白一点,Facade功能可以让类无需实例化而直接进行静态方式调用。

参考网址http://www.php.cn/manual/view/32830.html,ThinkPHP5.1核心Facade类库相关

0 回复 有任何疑惑可以回复我~
#1

edgex 提问者

非常感谢!
2018-05-22 回复 有任何疑惑可以回复我~
大神们我想问下 这个config::get() 方法 我调用出来的和tp5.0 不一样啊,5.0可以写参数 但是5.1我里面写参数返回值是null


0 回复 有任何疑惑可以回复我~

不好意思,我是菜鸟

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

tp5.1中Config的set方法不是静态的了,为什么要这么设计?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信