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

来源:4-4 响应对象

edgex

2018-05-04 05:05

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

https://img3.mukewang.com/5aeb79500001ea8f09190787.jpg

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

https://img3.mukewang.com/5aeb7a61000141d207110482.jpg

写回答 关注

3回答

  • 慕桂英2170621
    2018-05-22 08:02:05
    已采纳

    因为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类库相关

    edgex

    非常感谢!

    2018-05-22 12:24:41

    共 1 条回复 >

  • ading123
    2018-06-22 09:46:56
    大神们我想问下 这个config::get() 方法 我调用出来的和tp5.0 不一样啊,5.0可以写参数 但是5.1我里面写参数返回值是null


  • 菜鸟Wenco
    2018-05-06 17:09:39

    不好意思,我是菜鸟

快速入门ThinkPHP 5.0--基础篇

ThinkPHP5已发布多时,想了解ThinkPHP5的新特性吗?老司机带你马上出发~

58655 学习 · 495 问题

查看课程

相似问题