Composer 不会自动加载包

Composer doesn't autoload packages

我目前正在开发一个框架,但我不知道如何设置自动加载。首先,我创建了一个包含示例 class 和 composer.json 的包。我通过以下方式自动加载了该示例 class:

"autoload": {
    "classmap": [
      "libs/"
    ]
}

我检查了 /vendor/mypackage/vendor/composer/autoload_classmap.php 并确认包的自动加载器工作正常。但问题是我无法从主应用程序到达该包的 class 除非我直接包含该包的 autoload.php.

更新

/vendor/foo/mypackage/composer.json

"autoload": {
  "psr-4": {
     "Http\": "libs/"
   }
}

/vendor/foo/mypackage/libs/Request.php

namespace Http;
class Request {}

首先,通常使用 psr-0psr-4 自动加载配置会更好。使用 class 映射,每次添加新的 class 或重命名时都必须重新转储自动加载器。

您始终需要使用 require 'vendor/autoload.php'; 包含 Composer 自动加载器。添加此类 require 语句的最佳位置是在您的前端控制器文件中。

自己解决了。每当我更改 pacakge 的 composer.json.

时,我只需要重新安装包