2012-09-03 4 views
19

私はComposerを使っていくつかの依存関係を処理し、自動ロードを行う新しいプロジェクトを開始しました。Composerオートローダーによるカスタムコード管理?

私はベンダーディレクトリ全体ではなく、VCSにcomposer.jsonファイルを保存していますので、そこに自分のコードを追加したくないです。

独自のプロジェクト固有のコードをどのように処理して自動ロードすることができますか?

答えて

39

これは実際には非常に簡単です。リポジトリからベンダディレクトリを除外することが適切な方法です。コードは別の場所(srcなど)に格納する必要があります。

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

あなたがPSR-4規格以下のクラス名を持っていると仮定すると、それが動作するはずです:

は、あなたの名前空間(複数可)を認識し、その作曲をするためにautoloadプロパティを使用します。クラス名とファイルシステム上の位置のいくつかの例下:

  • アクメ\コマンド\ HelloCommand - >のsrc /コマンド/ HelloCommand.php
  • アクメ\フォーム\タイプ\はEmployeeType - >のsrc /フォーム/タイプ/ EmployeeType.php

クラスごとに名前空間を定義することを忘れないでください。ここでアクメ\コマンド\ HelloCommandの例です:

<?php 

namespace Acme\Command; 

class HelloCommand 
{ 
} 

は、あなたのPHPコントローラにオートローダを含めることを忘れないでください:

<?php 

require 'vendor/autoload.php'; 

PSR-4 standard on PHP Framework Interoperability Groupにもっと読みください。

composer.jsonを編集する場合は、install、updateまたはdump-autoloadを実行して、オートローダークラスパスを更新する必要があります。

+2

ダッシュクラスまたは2つの単純なコード例を使用して回答を投稿することができますか?リンク先のドキュメントを読んでいて、ディレクトリ/名前空間とvendor /で使われているものを比較しても、クラスを読み込むことができません。 – Letharion

+3

@Letharionが私の答えを更新しました。うまくいけば、これは役に立ちます。 –

関連する問題