- namespace其实就是怕文件类名字重合,于是用这个方法可以防止报错
//例如
@a.php文件
Class Same
{
public function a()
{
echo 'a';
}
}
@b.php文件
Class Same
{
public function b()
{
echo 'b';
}
}
________________________
运行index.php文件的时候
require("a.php");
require("b.php");
same();
这时就会报错:
Fatal error: Cannot declare class Same, because the name is already in use in *** on line 3
________________________
所以用namespace就可以避免
namespace App\a;
Class Same
{
public function a()
{
echo 'a';
}
}
namespace App\b;
Class Same
{
public function b()
{
echo 'b';
}
}
这时再运行
require("a.php");
require("b.php");
$a = new App\a\Same();
$a->a();
$b = new App\b\Same();
$b->b();
就不会报错了
2.use的作用就是,在上面代码块末尾,如果这样引用太长了
所以可以简化
//使用use操作符,声明类命名空间
use App\a;
require("a.php");
require("b.php");
//原始
$a = new App\a\Same();
$a->a();
//修改后
$a = new Same();
$a->a();
3.不过当use之后还是重合的话,可以用as来区分
4. 可以这样理解 namespace 命名空间是为了方便管理类而引入的机制,我们可以将功能相近的类都放在同一命名空间下,在使用时直接引入该空间就可以了,简单的说namespace 就是将里面的类打个包
5. 关键字namespace后面跟的是名称 不是路径!我们看到很多框架 namespace 后面都跟着“路径”其实是为了让我们知道该命名空间所在的文件位置 当我们文件很多时,这样的名称会方便我们查找。namespace和include,require完全不同!! 框架执行过程中已经帮我们 自动注入了,所以不需要我们 include require 不然要头疼死
参考:https://www.cnblogs.com/qq254980080/p/9933107.html