2015-01-06 7 views
6
私はPHPの仕事にどのように名前空間の私の理解に基づいて、次のディレクトリ構造を使用

:PSR-4仕様によるとPSR-4オートローディングはカスタムライブラリ用の作曲家でどのように機能しますか?

project_root 
    app/ 
    | lib/ 
    | | MyCompany/ 
    | | | Utility/ 
    | | | | Logger.php 
    | | | Core/ 
    | | | | User.php 
vendor/ 
    composer/ 
    symfony/ 
    guzzle/ 
bootstrap.php 
composer.json 

を、完全修飾クラス名は以下の形式があります。

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName> 

質問1:

上記の私のディレクトリ構造から、以下の仮定は正しいですか?

  • NamespaceName = MyCompanyの
  • SubNamespaceNames =ユーティリティ|コア
  • ClassName = Logger |ユーザー

質問2:私のbootstrap.phpのファイルは、以下が含まれている場合

<?php 
require 'vendor/autoload.php'; 

どうでしょうMyCompanyのディレクトリ内のIのautoloadにcomposer.jsonのconfigure the 'autoload'セクションのクラス?私は

答えて

5

リンクされたドキュメントから撮影bootstrap.phpの中にロガーのインスタンスを作成することができるだろうというような:これはかなり自明です

{ 
    "autoload": { 
     "psr-4": { 
      "MyCompany\\": "app/lib/MyCompany/", 
     } 
    } 
} 

、それは単にapp/lib/MyCompanyがルートであるオートローダを伝えますMyCompany\名前空間の場合

これでクラスを\MyCompany\Utility\Loggerとして使用できるようになります。

PSR-4では、PSR-0と異なり、通常MyCompanyをディレクトリ構造から除外し、app/lib/を使用します。

関連する問題