我已经创建了一个包,将业务逻辑分离为更容易分发模块。作曲家文件看起来像这样:如何让我的作曲家软件包自动加载正确?
{
"name": "aggiq/johnny-cash",
"description": "A collection of controllers, models, migrations, and tests for a phonebanking backend.",
"license": "MIT",
"authors": [ ... ],
"require": {
"illuminate/database": ">=5.5"
},
"require-dev": {
"fzaninotto/faker": "~1.4"
},
"autoload": {
"psr-4": {
"Johnny\\Phonebanking\\": "src/"
}
}
}
和我们的源文件确实是在SRC /:
的src /控制器/ PhonebankController.php 的src /型号/ Phonebank.php ...
我救推这对我们的gitlab回购,然后包括它作为一个测试项目的依赖:
{
...,
"repositories": [{
"type": "package",
"package": {
"name": "aggiq/johnny-cash",
"version": "0.1",
"type": "package",
"source": {
"url": "gitlab url",
"type": "git",
"reference": "dev"
}
}
}],
"require": {
"aggiq/johnny-cash": "*",
},
...
}
当我做撰写[R更新,它成功地抓住项目并将其下载到供应商的文件夹:
vendor/aggiq/johnny-cash/Controllers/PhonebankController.php
...
然而,当我看在测试项目的autoload_psr4.php,它不存在。我错过了一个步骤吗?
编辑:更新的目录有大写字母相匹配的命名空间,这里是生成的PSR4 php文件:
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
我已经改名为目录'的src/Controllers','的src/Models',等如你所说,并重新导入项目到我的基地项目,我可以c确认'vendor /'文件夹中的目录。但是运行'composer update'和'composer dump-autoload'不会将这些类添加到psr4 autoload文件中。抱歉! – whiterook6
只有前缀和它们的位置shoudl在'autoload_psr4.php',而不是特定的文件。如果缺少Johnny \\ Phonebanking \\“',请将文件的内容添加到您的问题中。 –
编辑成包括PSR4文件的内容 – whiterook6