PHP中引入命名空间主要通过use关键字,用于简化类、接口、函数或常量的调用;支持单个引入、别名引入、函数/常量引入、大括号批量引入,并需置于namespace后、可执行代码前。
PHP中引入命名空间主要通过 use 关键字,用于简化类、接口、函数或常量的调用,避免每次写完整限定名。
基本 use 语句引入类
当使用其他命名空间下的类时,在文件顶部用 use 声明其别名(默认为类名):
-
use App\Models\User; —— 引入后可直接写 User::find(1)
-
use App\Controllers\HomeController as Hc; —— 使用别名 Hc,调用 Hc::index()
-
use function App\Helpers\form
atDate; —— 引入命名空间下的函数(PHP 5.6+)
-
use const App\Config\VERSION; —— 引入命名空间下的常量(PHP 5.6+)
批量引入多个同级命名空间
可用大括号语法减少重复书写:
-
use App\Models\{User, Post, Comment}; —— 等价于三条独立 use
- use App\Services\{Cache, Logger, Mailer};
全局命名空间与完全限定名
未加 use 的类,默认在当前命名空间下查找;想调用全局类(如 Exception、DateTime),需加反斜杠前缀:
-
new \Exception('msg'); —— 显式指定根命名空间
-
use \Exception; 或 use Exception;(因 Exception 在全局,use 后不加 \ 也有效)
注意作用域和文件位置
use 必须出现在命名空间声明(namespace)之后、任何可执行代码之前:
- 错误写法:require 语句在 use 之前,会导致解析失败
- 正确顺序:namespace → use → class/function 定义 → 其他逻辑(如 require_once)
-
use 只在当前文件生效,不传递给被 include/require 的文件
基本上就这些。掌握 use 的几种形式,就能清晰组织和引用 PHP 命名空间中的元素。