コハクウェブデザイン

Composer入門

Composerで使うファイルやディレクトリ

composer.json <- 管理するライブラリの情報が書かれています。
composer.lock <- ライブラリのバージョン情報等が書かれている。
vendor <- ライブラリのソースコードが入っています。

composer.json

composer.jsonにはcomposerで管理するライブラリやパッケージの情報が書かれています。
「composer install」コマンドを打つとcomposer.jsonの情報を元にライブラリがインストールされます。

composer.lock

composer.lockはライブラリのバージョン情報等を記述するファイルです。
管理するライブラリの種類はcomposer.json、バージョンはcomposer.lockです。

composer.jsonを共有するとどの環境でも同じライブラリをインストールできますが、バージョンまで揃えるならcomposer.lockも必要です。

自作のプログラムを管理する

composerは外部ライブラリを使用するだけではなく自分で作ったプログラムも便利に管理することができます。

ディレクトリを作る

ではまずディレクトリ構成です。
project/myprogram <- 自作プログラム

myprogramディレクトリに自分のプログラムを置いてみます。
まずはprojectディレクトでcomposer initしてcomposer.jsonを作ります。

cd project
composer init

対話形式でいろいろ聞いてきますが、特に必要なければスキップしてOKです。
これでcomposer.jsonが追加されディレクトリ構成が以下の様になります。

project/myprogram <- 自作プログラム
project/composer.json

composer.jsonを修正

{
    "name": "hoge/project",
    "description": "this is test project",
    "type": "",
    "license": "MIT",
    "minimum-stability": "beta",
    "require": {},
}

composer.jsonの中身はこんな風になっていると思うので、以下の様に修正します。

{
    "name": "hoge/project",
    "description": "this is test project",
    "type": "",
    "license": "MIT",
    "minimum-stability": "beta",
    "require": {},
    "autoload": {
        "psr-4": {
            "myprogram\\": "myprogram/"
        }
    }
}

注意するポイントはpsr-4の中身。
「”ネームスペース\\” : “実際のディレクトリ/” 」という書き方にします。

autoloadをdumpする

よく意味はわかりませんが、composer.jsonを変更したりしたら以下のコマンドを実行しましょう。

composer dump-autoload

プログラムを書く

では次に実際にプログラム書きます。
「myprogram」ディレクトリに「MyClass.php」というファイルを作り以下の様にクラスを作ってみます。

<?php
namespace myprogram;

class MyClass
{
    public function sayHello()
    {
        echo 'Hello';
    }
}

はい、これで準備はOKなので最後にこのクラスを使ってみましょう。
composer.jsonと同じディレクトリに移動して「index.php」を作ります。

<?php
require_once 'vendor/autoload.php'; // これでmyprogram内のファイルはrequireする必要がなくなる。
use myprogram\MyClass;

$myclass = new MyClass();
$myclass->sayHello();

// 実行結果
// Hello

といった具合に最初に’vendor/autoload.php’を記載するだけで、require_once ‘myprogram/MyClass’;としなくても関係ファイルを自動的に読み込んでくれるようになります。
便利。

参考

動画でとてもわかり易く説明されています。
https://www.youtube.com/watch?v=dzg_ibTDN00