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": {
}}
パッケージをcomposerでロードする
ディレクトリがあるコマンドラインに入力
ロードが終わったらディレクトリはこうなるはずです
|-project
|-src
|-View.php
|-app
|-Tools.php
|-vendor
|-composer/*composerディレクトリの下にあるファイルは説明しません
|-monolog/*同理
|-autoload.php
|-composer.json
|-composer.lock
ロードしたmonologパッケージのテスト
プロジェクトディレクトリの下にindexを作成します.php
ブラウザでこのファイルアドレスにアクセスするには、通常
ページ
PSR-4でファイルをロードする
1.composerを編集します.json構成ロードディレクトリと空間名
さっきのcomposerを編集します.jsonファイル、autoloadモジュールを追加します.
ここで
その後、
変更
変更が完了したらコマンドラインに戻って実行
最後に
広がる
次に、
まとめ
venderの下のautoloadを表示します.phpファイルを見ると彼は
この
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のファイル
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のファイル