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-0
或 psr-4
自动加载配置会更好。使用 class 映射,每次添加新的 class 或重命名时都必须重新转储自动加载器。
您始终需要使用 require 'vendor/autoload.php';
包含 Composer 自动加载器。添加此类 require 语句的最佳位置是在您的前端控制器文件中。
自己解决了。每当我更改 pacakge 的 composer.json.
时,我只需要重新安装包
我目前正在开发一个框架,但我不知道如何设置自动加载。首先,我创建了一个包含示例 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-0
或 psr-4
自动加载配置会更好。使用 class 映射,每次添加新的 class 或重命名时都必须重新转储自动加载器。
您始终需要使用 require 'vendor/autoload.php';
包含 Composer 自动加载器。添加此类 require 语句的最佳位置是在您的前端控制器文件中。
自己解决了。每当我更改 pacakge 的 composer.json.
时,我只需要重新安装包