LoginSignup
0
0

More than 1 year has passed since last update.

【PSR-4 Autoload】第三回 composerからautoloadを利用

Posted at

この記事でできるようになること :muscle:

【第一回】 autoloadの概要を理解
【第二回】 仕組みを理解したうえでautoloadを実装
【第三回】 composerからautoloadを利用

そもそも... :thinking:

Composerとは :mag_right:

概説

PHPのプロジェクトで使用するライブラリ・パッケージの管理(インストール・アップデート等)を単一のファイル(composer.json)から一括で行えるツールです。
ComposerにはAutoload機能も用意されており、自作Autoloadクラスを作らなくてもファイルの自動読み込みを実現することが可能になります。便利ですね。

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

  1. Enables you to declare the libraries you depend on.
  2. Finds out which versions of which packages can and need to be installed, and installs them (meaning it downloads them into your project).
  3. You can update all your dependencies in one command.

大まかな使い方

  1. composer自体をインストール
  2. プロジェクトの最上位の階層にcomposer.jsonファイルを用意
  3. composer.jsonファイルに使用するライブラリやそのバージョンについて書き込む(今回はAutoloadの設定を書き込む)
  4. ターミナルでcomposer installコマンドを実行

ComposerからAutoloadを利用 :twisted_rightwards_arrows:

composer.json

composerがマシンにインストールされている前提で話を進めます。
下記の場所にcomposer.jsonを用意します。

ディレクトリ構成
./Qiita
    ├ App
    ├ Autoload.php
    ├ index.php
    └ composer.json ← NEW!
composer.json
{
    "autoload": {
        "psr-4": {
            "App\\": "App/"
        }
    }
}

"App\\"名前空間プレフィックスで、
"App/"ベースディレクトリに当たります。

"App/"以前のパス(私の環境ではC:/Users/yanmy/OneDrive/Desktop/Qiita)はcomposerが勝手に取得してくれます。(autoload_psr4.php参照)

vendor > composer > autoload_psr4.php
<?php

// autoload_psr4.php @generated by Composer

//この2行でベースディレクトリを取得
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);

return array(
    'App\\' => array($baseDir . '/App'),
);

用意ができたらターミナル上でQiitaディレクトリにいることを確認し、以下のコマンドを実行してください。

Terminal
~\Qiita>composer install

vendorディレクトリとcomposer.lockファイルが生成されれば成功です。

index.phpを書き換えます。
読み込むAutoloadファイルを自作のものからvendor/autoload.phpに書き換えます。

index.php
<?php
require_once "vendor/autoload.php";

use App\Greeting\English as En;
use App\Greeting\Japanese as Ja;

$en = new En\Hello();
$ja = new Ja\Hello();

ターミナル上でindex.phpを実行し出力が変わらないことが確認できれば成功です!

Terminal
~Qiita> php index.php
Hello World!
こんにちは世界。

お疲れ様でした!!:tada:

まとめ :ribbon:

今回はComposerからAuotoloadを利用する方法について学びました。
作業内容は以下の通りです。

  1. composerをインストール(割愛)
  2. composer.jsonを用意する
  3. 利用したい名前空間プレフィックスとベースディレクトリの組み合わせを書き込む
  4. ターミナル上でcomposer installを実行
  5. Autoload機能を使用したいファイルでvendor/autoload.phpを読み込む
  6. 動作が変わらないことを確認する

以上でAutoloadについての解説は終了です。
最後まで読んでいただきありがとうございました!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0