• 技术文章 >后端开发 >php教程

    PHP加入命名空间的好处方便自动加载

    不言不言2018-05-04 10:20:18原创728
    这篇文章主要介绍了关于PHP加入命名空间的好处方便自动加载,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

    一个PHP项目,通常只有一个入口文件index.php,我们通常会在这个入口文件中写入自动加载函数,用来require以后会实例化的类文件。如:

    spl_autoload_register(function ($className) {    require 'class/' . $className . '.php';});通过以上的代码,我们发现:在自动加载时,我们需要指定存放类的文件夹,以便找到相应的类。那么问题产生了。在引入命名空间之前:

    我们的项目目录

    index.php

    Controller.php

    在index.php中我们需要实例化一个controller目录下的Controller类,并且调用这个对象的model()方法,而这个方法则需要实例化一个model目录下的Model类。我们运行一下index.php:

    Warning: require(controller/Model.php): failed to open stream: No such file or directory

    提示没有这个文件或目录。原因很简单:PHP在new Model()的时候,是自动去controller目录下去require的,所以找不到。

    那么,我们的自动加载函数应该怎么写才能解决问题呢?很显然,把'controller/'换成'model/' 或者 不写目录,都不能正常加载。于是,使用命名空间的好处就显现出来了。

    引入命名空间之后:

    index.php

    Controller.php

    Model.php

    我们按照文件目录的结构来为每个类写入命名空间,当在一个类中需要实例化另外一个类时,IDE会帮我们写入use namespace ; 。这样,我们在写自动加载的时候,就不用考虑将要加载的类在哪一个文件目录下了,只需要这样写:

    spl_autoload_register(function ($class) {    require $class . '.php';});因为我们在index.php中use了所用到的类的命名空间,自动加载函数会到相应的命名空间中去寻找类(上述代码中的$class就相当于是'controller\Controller'),而这些类中又需要实例化其他的类,因为这些类中也声明了use 其他类的命名空间 ;,所以自动加载函数又会去相应的命名空间中去require其他类。这样,我们就不会为加载类而发愁了,极大地解放了我们的编程负担。

    相关推荐:

    无需重新编译php加入ftp扩展的方法

    PHP加入数据程序的具体实现方法

    以上就是PHP加入命名空间的好处方便自动加载的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 方便 好处
    上一篇:web安全防sql注入就是多过滤附PHP过滤函数 下一篇:php数组通过json_encode转换 js中无法识别改json格式
    PHP编程就业班

    相关文章推荐

    • PHP高并发实例详解之解决商品库存超卖问题• 文件下传的若干有关问题• 请教各位测试这段代码的结果是什么• php 数据能够获取 但没法写入数据库 同一文件另一个表可能写入• 四十分求ThinkPHP循环嵌套打印出父类与子类的列表

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网