如何为我的项目创建 PSR-4 自动加载器?

How to create a PSR-4 autoloader for my project?

我正在创建一个 PHP 项目并希望实现 PSR-4 自动加载。

我不知道我需要在 vendor 目录中创建哪些文件来实现 class 个文件的自动加载。

如果您正在使用 composer,则无需创建自动加载器,而是让 composer 完成它的工作并为您创建它。

您唯一需要做的就是在 composer.json 上创建适当的配置并执行 composer dump-autoload.

例如:

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

通过以上操作,如果你有这样的文件结构

├── src/
│   ├── Controller/
│   ├── Model/
│   ├── View/
│   └── Kernel.php
├── public/
│   └── index.php
└── vendor/

执行 composer dump-autoload 后,自动加载程序将在 vendor/autoload.php 上生成。

你所有的 classes 都应该嵌套在 App 命名空间中,每个文件你应该只放一个 class。

例如:

<?php /* src/Controller/Home.php */

namespace App\Controller;

class Home { /* implementation */ }

您只需要在入口脚本中包含自动加载器(例如 index.php)。

<?php

require '../vendor/autoload.php';

这将允许您在此之后从任何地方直接加载您的 classes,如下所示:

use App\Controller\Home;

$homeController = new Home();

这在文档中有解释,here