使用 Composer 自动加载

虽然 composer 提供了一个管理 PHP 项目依赖关系的系统(例如来自 Packagist ),但它也可以作为自动加载器,指定在哪里查找特定的命名空间或包含通用函数文件。

它以 composer.json 文件开头:

{
    // ...
    "autoload": {
        "psr-4": {
            "MyVendorName\\MyProject": "src/"
        },
        "files": [
            "src/functions.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "MyVendorName\\MyProject\\Tests": "tests/"
        }
    }
}

此配置代码确保命名空间 MyVendorName\MyProject 中的所有类都映射到 src 目录,并将 MyVendorName\MyProject\Tests 中的所有类映射到 tests 目录(相对于你的根目录)。它还会自动包含文件 functions.php

将其放入 composer.json 文件后,在终端中运行 composer update,让作曲家更新依赖项,锁定文件并生成 autoload.php 文件。部署到生产环境时,你将使用 composer install --no-devautoload.php 文件可以在 vendor 目录中找到,该目录应该在 composer.json 所在的目录中生成。

你应该在应用程序生命周期的设置点使用类似下面的行来提前知道此文件。

require_once __DIR__ . '/vendor/autoload.php';

一旦包含,autoload.php 文件负责加载你在 composer.json 文件中提供的所有依赖项。

目录映射的类路径的一些示例:

  • MyVendorName\MyProject\Shapes\Squaresrc/Shapes/Square.php
  • MyVendorName\MyProject\Tests\Shapes\Squaretests/Shapes/Square.php