23

Composerを使用していくつかの依存関係とそれらの自動読み込みを処理する新しいプロジェクトを開始しました。

vendor ディレクトリ全体ではなく、composer.json ファイルのみを VCS に保持しているため、そこにコードを追加したくありません。

自分のプロジェクト固有のコードをどのように処理すれば、それも自動ロードされますか?

4

1 に答える 1

49

これは実際には非常に簡単です。リポジトリからベンダーディレクトリを除外するのが正しいアプローチです。コードは別の場所(srcなど)に保存する必要があります。

autoloadプロパティを使用して、そのコンポーザーに名前空間を認識させます。

{
    "autoload": {
        "psr-4": {
            "Acme\\": "src/"
        }
    }
}

psr-4標準に従ったクラス名があると仮定すると、それは機能するはずです。以下に、ファイルシステム上のクラス名とその場所の例を示します。

  • Acme \ Command \ HelloCommand-> src / Command / HelloCommand.php
  • Acme \ Form \ Type \ EmployeeType-> src / Form / Type / EmployeeType.php

クラスごとに名前空間を定義することを忘れないでください。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のいずれかを実行して、オートローダークラスパスを更新する必要があることに注意してください。

于 2012-09-03T12:56:53.253 に答える