作曲家自动加载错误
composer autoload error
我正在尝试使用 composer 并将创建自己的程序包。我的包项目具有以下文件结构:
scr/Scheduler.php
.gitignore
composer.json
测试class:
namespace david\Scheduler;
use Symfony\Component\Yaml\Parser;
class Scheduler
{
private $yamlParser;
public function __construct()
{
$this->yamlParser = new Parser();
}
}
和 composer.json 文件
...
"require": {
"symfony/yaml": "~3.0.3"
},
"autoload": {
"psr-4": {
"david\Scheduler\": "src/"
}
}
我已将所有内容提交给私有 github 存储库。目前我只有 master 分支,没有标签。
我的第二步是使用以下 composer.json 文件创建一个客户端项目:
"repositories": [
{
"type": "package",
"package": {
"name": "david/scheduler",
"type": "package",
"version": "dev-master",
"source": {
"url": "git@github.com:david/scheduler.git",
"type": "git",
"reference": "master"
}
}
}
],
"require": {
"david/scheduler": "dev-master"
}
当我 运行 composer update 时,github 项目将被克隆并存储在 vendor 目录中。但只有我的包裹。 symfony/yaml 的依赖项将不会加载。
vendor
composer
david/scheduler
同时作曲家创建一个空的 autoload_psr4 文件。
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
我想我的架构可能存在一些问题...
您的问题是您正在使用 package
类型注册您的自定义存储库,这意味着根包正在定义 david/scheduler
的元数据和 composer.json 文件中的git Composer 从未使用过 repo。在这个包定义中,没有对 symfony/yaml
组件的依赖,也没有自动加载你的调度程序 class.
作为一般规则,package
存储库应始终被视为最后的手段(它有很多缺点)。当您控制 git 存储库时,将 composer.json 文件放入存储库并使用 vcs
存储库效果更好(因为 composer 可以依赖来自 git 本身的元数据,包元数据在包 git 存储库中提供。
根包应该是这样的:
{
"repositories": [
{
"type": "vcs",
"url": "git@github.com:david/scheduler.git"
}
],
"require": {
"david/scheduler": "dev-master"
}
}
我正在尝试使用 composer 并将创建自己的程序包。我的包项目具有以下文件结构:
scr/Scheduler.php
.gitignore
composer.json
测试class:
namespace david\Scheduler;
use Symfony\Component\Yaml\Parser;
class Scheduler
{
private $yamlParser;
public function __construct()
{
$this->yamlParser = new Parser();
}
}
和 composer.json 文件
...
"require": {
"symfony/yaml": "~3.0.3"
},
"autoload": {
"psr-4": {
"david\Scheduler\": "src/"
}
}
我已将所有内容提交给私有 github 存储库。目前我只有 master 分支,没有标签。 我的第二步是使用以下 composer.json 文件创建一个客户端项目:
"repositories": [
{
"type": "package",
"package": {
"name": "david/scheduler",
"type": "package",
"version": "dev-master",
"source": {
"url": "git@github.com:david/scheduler.git",
"type": "git",
"reference": "master"
}
}
}
],
"require": {
"david/scheduler": "dev-master"
}
当我 运行 composer update 时,github 项目将被克隆并存储在 vendor 目录中。但只有我的包裹。 symfony/yaml 的依赖项将不会加载。
vendor
composer
david/scheduler
同时作曲家创建一个空的 autoload_psr4 文件。
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
我想我的架构可能存在一些问题...
您的问题是您正在使用 package
类型注册您的自定义存储库,这意味着根包正在定义 david/scheduler
的元数据和 composer.json 文件中的git Composer 从未使用过 repo。在这个包定义中,没有对 symfony/yaml
组件的依赖,也没有自动加载你的调度程序 class.
作为一般规则,package
存储库应始终被视为最后的手段(它有很多缺点)。当您控制 git 存储库时,将 composer.json 文件放入存储库并使用 vcs
存储库效果更好(因为 composer 可以依赖来自 git 本身的元数据,包元数据在包 git 存储库中提供。
根包应该是这样的:
{
"repositories": [
{
"type": "vcs",
"url": "git@github.com:david/scheduler.git"
}
],
"require": {
"david/scheduler": "dev-master"
}
}