# PHP 命名空间与 Composer 自动加载

举报
yd_220371319 发表于 2026/10/06 12:51:25 2026/10/06
【摘要】 类一多,很快会遇到两个问题:同名类冲突,以及不可能每个页面手动 `require` 大量文件。## 1. 命名空间```phpnamespace App\Models;class User{}```另一个模块也可以有:```phpnamespace App\Services;class User{}```完整名称分别是:```textApp\Models\UserApp\Services\U...


类一多,很快会遇到两个问题:同名类冲突,以及不可能每个页面手动 `require` 大量文件。

## 1. 命名空间

```php
namespace App\Models;

class User
{
}
```

另一个模块也可以有:

```php
namespace App\Services;

class User
{
}
```

完整名称分别是:

```text
App\Models\User
App\Services\User
```

## 2. use

```php
use App\Models\User;

$user = new User();
```

`use` 是引用别名,本身不会负责加载文件。

## 3. Composer 自动加载

`composer.json`:

```json
{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}
```

目录:

```text
src/
├── Models/User.php
└── Services/UserService.php
```

执行:

```bash
composer dump-autoload
```

入口文件:

```php
require __DIR__ . "/vendor/autoload.php";

use App\Models\User;

$user = new User();
```

## 4. PSR-4

简单理解:

```text
App\Models\User
        ↓
src/Models/User.php
```

命名空间、目录和文件名保持一致,自动加载就非常直观。

## 5. 为什么重要?

当项目有几百个类时,开发者不应该关心“这个类文件在哪里、我要 require 哪个文件”。

这就是 Composer 自动加载的价值。

## 小结

现代 PHP 项目的基础组合通常是:

```text
namespace
use
Composer
PSR-4
autoload
```

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。