PSR-4とcomposer autoloadを組み合わせてフォルダを自動的にロードする

4275 ワード

requireファイルは面倒で、PSR-4とcomposerを組み合わせて一度にロードし、生涯使用します.
Javaのimportに似ているような気がしますが、最近理解したことを自分でメモしておきます.
自分のバッグをcomposerで管理しましょう
composerのインストール
これは余計なことは言わない
英語版チュートリアル
中国語版チュートリアル
PSR-4仕様
PSR-4-autoloader
プロジェクトディレクトリの構築
|-project
​ |-src
​ |-View.php
​ |-app
​ |-Tools.php
|-composer.json
上のパスのView.phpはプロジェクト/src/Viewにあります.phpでは、他の同理、ViewとToolsはプレゼンテーションのために使われているだけです.
composerを構築する.json
作成したcomposerを開きます.jsonファイル入力、ここでmonologを例にとります.
{ "require": {
"monolog/monolog": "1.2.*"

}}
パッケージをcomposerでロードする
ディレクトリがあるコマンドラインに入力
#linux          
composer install
#windows        composer  
composer.phar install 

ロードが終わったらディレクトリはこうなるはずです
|-project
​ |-src
​ |-View.php
​ |-app
​ |-Tools.php
​ |-vendor
|-composer/*composerディレクトリの下にあるファイルは説明しません
|-monolog/*同理
​ |-autoload.php
|-composer.json
|-composer.lock
ロードしたmonologパッケージのテスト
プロジェクトディレクトリの下にindexを作成します.php
#index.php

 * Date: 2017/1/22
 * Time: 10:50
 */
//  autoload.php  
require_once 'vendor/autoload.php';
//  monlog
$log = new MonologLogger('name');
$log->pushHandler(new MonologHandlerStreamHandler('app.log', MonologLogger::WARNING));
$log->addWarning('Foo');
echo 'success'; 

ブラウザでこのファイルアドレスにアクセスするには、通常http://127.0.0.1/project/index.phpです.
ページsuccessを見てから、プロジェクトフォルダの下にappが1つ増えているかどうかを確認します.logファイル.では、composerを使用してパッケージをロードし、そのロードしたパッケージを使用してlogログを出力しておめでとうございます.
PSR-4でファイルをロードする
1.composerを編集します.json構成ロードディレクトリと空間名
さっきのcomposerを編集します.jsonファイル、autoloadモジュールを追加します.
{
  "require": {
    "monolog/monolog": "1.2.*"
  },
  "autoload": {
    "psr-4": {
      "Acme": "src/",
    }
  }
} 

ここでAcme:"src"は、Acmeという空間名を/project/srcというディレクトリにバインドすることを示している.
その後、project/src/View.phpファイルを変更します.
#View.php

 * Date: 2017/1/22
 * Time: 11:06
 */
//     Acme,
namespace Acme;
class View {
    public static function getView() {
        echo "get view";
    }
} 

変更/project/index.phpに戻る
#index.php

 * Date: 2017/1/22
 * Time: 10:50
 */
require_once 'vendor/autoload.php';
use AcmeView;

View::getView(); 

変更が完了したらコマンドラインに戻って実行
#           autoload   
vagrant@easychris:/var/www/public/test$ composer dump-autoload
Generating autoload files 
PS: !
#       
composer dump-atoload -o
#      composer dump-autoload --optimize,          。 

最後にhttp://127.0.0.1/project/index.phpを開いてget viewが表示されたら、構成成功おめでとうございます.
広がる
次に、srcディレクトリの下にTools.phpなどのディレクトリを作成し、他のrequireをする必要がなく、直接使用することができます.とても便利で、自分で試してみることができます.
まとめ
venderの下のautoloadを表示します.phpファイルを見ると彼はComposerAutoloaderInitaa62b39f628dda129dc5b4ebdfb2b2ae::getLoader();ドルをreturnしています
#autoload.php

このgetLoader()の方法は次のようなことをしました
1.ComposerClassLoaderを探す存在しない場合は、ComposerAutoloaderInitaa 62 b 39 f 628 dda 129 dc 5 b 4 ebdfb 2 b 2 aeにインスタンスを配置する.composer cliを生成する各種autoload_psr4, autoload_classmap, autoload_namespaces(psr-0)はすべてComposerClassLoaderに登録されています.3.直接requireすべてautoload_filesのファイル