ビジネスロジックをモジュールをより簡単に配布するためのパッケージを作成しました。作曲ファイルは次のようになります。作者パッケージを正しく自動ロードするにはどうすればよいですか?
{
"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の更新は、それが成功したプロジェクトをつかみ、ベンダーのフォルダにダウンロードします。私はテストプロジェクトのautoload_psr4.phpで見たとき
vendor/aggiq/johnny-cash/Controllers/PhonebankController.php
...
は、しかし、それはありません。私が逃した一歩はありますか?
編集:名前空間と一致するように大文字を持っているディレクトリを更新し、ここで生成PSR4のPHPファイルです:
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
私が提案したように 'src/Controllers'、' src/Models'などに名前を変更し、プロジェクトを自分のベースに再インポートしました。私はできる'vendor /'フォルダ内のディレクトリを確認してください。しかし、 'composer update'と' composer dump-autoload'を実行しても、クラスはpsr4自動ロードファイルに追加されません。ごめんなさい! – whiterook6
接頭辞とその位置は、特定のファイルではなく、 'autoload_psr4.php'にあります。 '' Johnny \\ Phonebanking \\ "'が見つからない場合は、ファイルの内容を質問に追加してください。 –
PSR4ファイルの内容を含むように編集 – whiterook6