PHP/Composer

PHP版の Ruby の Bundler とか Java の maven と思っていい。

composer.json の作り方

必要なライブラリの指定

このように require の下に名前とバージョンを指定する。

{
    "name": "yamada/unko",
    "require": {
        "hoge/piyo": "1.2.3"
    }
}

セントラルリポジトリに該当のパッケージがあった場合自動的に設定される。

バージョンの指定方法

ex memo
ズバリ指定 1.2.3

指定したライブラリを自分の PHP 内で使う方法

このように一番起点となる自分のソースコードから composer が自動生成したら autoload.php を呼び出せばいい。

require_once __DIR__ . '/vendor/autoload.php';
 
use hoge\piyo\Fuga;

この autoload.php が各ライブラリのコードを全て自動的に require してくれて使える状態になる。 あとはそのコードで使いたいクラスを use でズラズラと書けばいい。

require されているので namespace が合致すればそこから使えるようになる。

自作のコードをオートロード対象にする

※ このへんの情報が psr-0 と psr-4 で錯綜しているので、改めて詳しく確認する必要がある。なにやらアンスコに関する意味が違うらしい。

autoload.php を使えば require 指定したライブラリは全読み込みしてくれるが、そこに自作のコードも加えられると便利なのでそのようにできる記述がある。

このように記述する。 psr-4 というのは PHP に関する autoload の規約の名前でその規約に従ってディレクトリとか名前が構成されてますよと伝えている。

{
    "name": "yamada/unko",
    "require": {},
    "autoload": {
        "psr-4": {
            "hoge\\": "hoge/",
            "hoge\\piyo\\": "hoge/piyo/"
        }
    }
}

の後に名前空間、ディレクトリとディレクトリを書く。 ここには対応させるディレクトリとパッケージを全部書く。

コマンド

composer.json を使ってインストール

ライブラリの依存性を解決して(つまり lock を更新して)からインストール

$ composer update

開発であれば、だれかが代表してやるやつ

composer.lock を使ってインストール

すでに生成されている composer.lock を使ってインストール

$ composer install

Composer 自体のバージョンアップ

$ sudo composer self-update

サブコマンドのヘルプを出す

$ composer list

autoload.php を再作成する

ライブラリは追加してなくても、自作の namespace を追加した場合は autoload の再作成が必要なのでそれを行う。

$ composer dump-autoload

composer.json と composer.lock の意味

json のほうはユーザーが指定する定義で、依存性やらバージョンを考慮したインストール対象となるライブラリそのものが記述されているものが lock。

Install

Mac OSX Yosemite

Yosemite にインストールする。Composerを見ると

$ curl -sS https://getcomposer.org/installer | php

をやれと書いてあるので、やる。

終了

Linux Mint 18.1

apt で一発。

$ sudo apt install composer

コマンド等のインストール位置

コマンドをインストールした場合は

~/vendor/package_name/src/bin/hogehoge

あたりに入るのでそれを使う

php/dev/package_manage/composer.txt · 最終更新: 2019-12-25 10:12 by ore