ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP中的namespace、use与require

2022-04-30 01:01:40  阅读:207  来源: 互联网

标签:文件 use php require namespace 报错 PHP


namespace(命名空间):其实就是声明了空间,主要作用是防止在引入.php文件的时候防止.php内部的类/函数/常量或第三方类/函数/常量之间的名字冲突,如果引用了重复类名会导致报错。如下图:

 

a.php

<?php
//namespace think;
class a {
    public function a()
    {
        echo 'a';
    }
}

b.php

<?php
//namespace think;
//use think\a;
require_once './22/a.php';
require_once 'a.php';
//use think2\a as a2;
class b {
    public function b2(){
        $a =  new a;
        $a->a2();
        echo 'b';
    }

}
$c = new b();
$c->b2();
如上代码,require_once了两个内容一样的php文件,里面有相同的类a,当两个类重复的时候PHP会报错。   use:use关键字与文件加载没有一点关系,use关键字的作用就是声明要使用的类所处那个命名空间之下(而且方便了对象的实例化)。注:在使用traits的时候也会只用use来继承traits 例如下图,new \think\a实例化a的时候需要加上命名空间think,如果不加的话需要将b.php第三行的注释解开。而且如果两个a.php中有一个使用了命名空间的话require_once 同样拥有类名的文件不会报错。  

 

require:作用是要引进所需要的文件,文件的位置与命名空间无关,要使用绝对位置或者相对位置。 总结:其实说白了就是require引入了文件(require是根本),然后namespace是为了防止类名重复而导致php报错,use这是为了让对象声明更加的简洁代码更加优雅而存在的属于是锦上添花的类型。   至于Thinkphp5.0中类似下图的做法看似没有require到文件,实际上是框架已经require了文件的。      

 

 

(17条消息) 详解spl_autoload_register()函数_pengmingdong的博客-CSDN博客_spl_autoload_register

 

 

 

 

 

 

 

 

标签:文件,use,php,require,namespace,报错,PHP
来源: https://www.cnblogs.com/0769ljy/p/16209240.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有