命名空间 #

一、命名空间基础 #

1.1 定义命名空间 #

php
<?php
namespace App\Models;

class User
{
    public string $name;
}

1.2 使用命名空间 #

php
<?php
use App\Models\User;

$user = new User();

1.3 完整限定名 #

php
<?php
$user = new \App\Models\User();

二、子命名空间 #

php
<?php
namespace App\Models\Entities;

class User {}
php
<?php
use App\Models\Entities\User;

三、use导入 #

3.1 导入类 #

php
<?php
use App\Models\User;
use App\Services\UserService;

3.2 别名 #

php
<?php
use App\Models\User as UserModel;
use App\Services\User as UserService;

3.3 导入函数(PHP 5.6+) #

php
<?php
use function App\Helpers\formatDate;
use function App\Helpers\calculate as calc;

3.4 导入常量(PHP 5.6+) #

php
<?php
use const App\Config\VERSION;

3.5 批量导入 #

php
<?php
use App\Models\{User, Order, Product};
use App\Services\{UserService, OrderService};

四、命名空间规则 #

4.1 文件开头 #

命名空间必须在文件开头声明:

php
<?php
namespace App;

class Example {}

4.2 全局空间 #

php
<?php
namespace {
    
}

4.3 NAMESPACE #

php
<?php
namespace App\Models;

echo __NAMESPACE__;

五、自动加载 #

5.1 PSR-4 #

text
App\Models\User => src/Models/User.php
App\Services\UserService => src/Services/UserService.php

5.2 Composer自动加载 #

json
{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}
php
<?php
require 'vendor/autoload.php';

use App\Models\User;

$user = new User();

六、最佳实践 #

6.1 一个文件一个类 #

php
<?php
namespace App\Models;

class User
{
    
}

6.2 导入而非完整路径 #

php
<?php
use App\Models\User;

$user = new User();

6.3 合理组织命名空间 #

text
App/
├── Models/
│   ├── User.php
│   └── Order.php
├── Services/
│   └── UserService.php
└── Controllers/
    └── UserController.php

七、总结 #

本章学习了:

  • 命名空间定义
  • use导入
  • 别名
  • 批量导入
  • PSR-4自动加载

下一章将学习文件操作。

最后更新:2026-03-26