include 和 use 区别

Include 为new类时 需要引用 类似复制到当前页面 的代码

 

Use 为 导入类的命名空间 方便 new的适合更简短输入类名

使用命名空间只是让类名有了前缀,不容易发生冲突,系统仍然不会进行自动导入。

如果不引入文件,系统会在抛出 "Class Not Found" 错误之前触发 __autoload 函数,并将限定类名传入作为参数。

所以上面的例子都是基于你已经将相关文件手动引入的情况下实现的,否则系统会抛出 " Class  not found"。

 

new 未include的类时 启动 spl_autoload_register 将类名作为参数 传入 进行include

 

spl_autoload_register(function ($class) { // class = os\Linux

 

    /* 限定类名路径映射 */

    $class_map = array(

        // 限定类名 => 文件路径

        'os\\Linux' => './Linux.php',         使用一个数组去保存类名与文件路径的关系,当类名传入时,就知道该引入哪个文件去加载这个类

    );

 

    /* 根据类名确定文件名 */

    $file = $class_map[$class];

 

    /* 引入相关文件 */

    if (file_exists($file)) {

        include $file;

    }

});

 

new \os\Linux();

 

 

但是一旦文件多起来的话,映射数组会变得很长,这样的话维护起来会相当麻烦。如果命名能遵守统一的约定,就可以让自动加载器自动解析判断类文件所在的路径。

 

PSR-4 是关于由文件路径自动载入对应类的相关规范,规范规定了一个完全限定类名需要具有以下结构:

\<顶级命名空间>(\<子命名空间>)*\<类名>

参考http://www.cnblogs.com/woider/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值