PHP命名空间namespace及use的简单用法
1. 概述
在 PHP 5.3 及其后续的版本中,引入了命名空间的概念。命名空间可以使代码的组织更加清晰,避免命名冲突。一个命名空间可以包含多个类、函数、常量等元素,而这些元素都会有一个唯一的标识符,以便在不同的命名空间中使用。
使用命名空间时,需要在代码最顶部使用 namespace
关键字指定当前文件所属的命名空间。同一个命名空间下的元素可以直接使用,不同命名空间下的元素需要使用 use
关键字导入。
2. 定义命名空间
使用 namespace
关键字定义命名空间。
// 定义名为 MyNamespace 的命名空间
namespace MyNamespace;
class MyClass {
//
}
若文件中没有定义命名空间,则默认属于全局命名空间 global
。
3. 导入命名空间
使用 use
关键字导入命名空间。导入后可以直接使用该命名空间对应的类、函数、常量等元素。
使用 use
关键字的一种方法是导入一个指定的类或命名空间。
// 导入 MyAnotherNamespace 命名空间下的 MyAnotherClass 类
use MyAnotherNamespace\MyAnotherClass;
$obj = new MyAnotherClass();
使用 use
关键字的另一种方法是给一个类或接口指定别名。
// 给 MyNamespace\MyClass 指定一个别名
use MyNamespace\MyClass as AliasClass;
$obj = new AliasClass();
还可以导入命名空间下的所有类。
// 导入 MyNamespace 命名空间下的所有类
use MyNamespace\{Class1, Class2, Class3};
$obj1 = new Class1();
$obj2 = new Class2();
$obj3 = new Class3();
4. 命名空间的嵌套使用
命名空间可以嵌套使用,类似于目录的结构。
// 定义 MyNamespace 命名空间
namespace MyNamespace;
// 定义 MyNamespace\SubNamespace 命名空间
namespace MyNamespace\SubNamespace;
class MyClass {
//
}
在使用嵌套命名空间时,需要注意指定完整的命名空间名称。
// 导入 MyNamespace\SubNamespace 命名空间下的 MyClass 类
use MyNamespace\SubNamespace\MyClass;
$obj = new MyClass();
5. 参考链接
PHP 命名空间:https://www.php.net/manual/zh/language.namespaces.php
命名空间和'use'关键字 : https://www.runoob.com/php/php-namespaces.html
PHP 命名空间 namespace 定义与使用详解 : https://www.cnblogs.com/_enkai/p/PHP_namespace.html