命名空间 #
一、命名空间基础 #
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