我已經創建了一個包,將業務邏輯分離爲更容易分發模塊。作曲家文件看起來像這樣:如何讓我的作曲家軟件包自動加載正確?
{
"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