Composerを使用していくつかの依存関係とそれらの自動読み込みを処理する新しいプロジェクトを開始しました。
vendor ディレクトリ全体ではなく、composer.json ファイルのみを VCS に保持しているため、そこにコードを追加したくありません。
自分のプロジェクト固有のコードをどのように処理すれば、それも自動ロードされますか?
Composerを使用していくつかの依存関係とそれらの自動読み込みを処理する新しいプロジェクトを開始しました。
vendor ディレクトリ全体ではなく、composer.json ファイルのみを VCS に保持しているため、そこにコードを追加したくありません。
自分のプロジェクト固有のコードをどのように処理すれば、それも自動ロードされますか?
これは実際には非常に簡単です。リポジトリからベンダーディレクトリを除外するのが正しいアプローチです。コードは別の場所(srcなど)に保存する必要があります。
autoloadプロパティを使用して、そのコンポーザーに名前空間を認識させます。
{
"autoload": {
"psr-4": {
"Acme\\": "src/"
}
}
}
psr-4標準に従ったクラス名があると仮定すると、それは機能するはずです。以下に、ファイルシステム上のクラス名とその場所の例を示します。
クラスごとに名前空間を定義することを忘れないでください。Acme \ Command\HelloCommandの例を次に示します。
<?php
namespace Acme\Command;
class HelloCommand
{
}
PHPコントローラーにオートローダーを含めることを忘れないでください。
<?php
require 'vendor/autoload.php';
PHP FrameworkInteroperabilityGroupのPSR-4標準の詳細をご覧ください。
composer.json
編集する場合は、install、update、またはdump-autoloadのいずれかを実行して、オートローダークラスパスを更新する必要があることに注意してください。