はじめに
こんな経験ありませんか?
あなた 「パッケージをcomposerで公開しました!よかったら使ってください!」
初心者 「composerって何?requireするだけの方法はないの?」
あなた 「えーそんなこと言われても…」
composerのインストール方法および使い方を教えるのもいいと思いますが、別の手段として単一ファイルをrequireするだけで済む方法も用意しておくと便利な場合もあるんじゃないかと思います。その際のPharパッケージ生成をちょっとだけ楽にするためのツールです。
インストール方法も上記に英語で記載してあるのですが、一応こちらにも日本語で書いておきます。
インストール
1. Composerのグローバルインストールを実行
Packagistから落としてきます。
example@localhost:~$ composer global require mpyw/comphar:@dev
Changed current directory to /Users/mpyw/.composer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing mpyw/comphar (dev-master XXXXXXX)
Cloning XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Writing lock file
Generating autoload files
example@localhost:~$
2. $PATH
を更新
まだの場合は**~/.composer/vendor/bin
**にパスを通しておいてください。
~/.bashrc ~/.zshrc など
export PATH="~/.composer/vendor/bin:$PATH"
使い方
Usageを日本語訳しておきます。
example@localhost:~$ comphar -h
使い方: ./comphar [オプション]
オプション:
-h, --help このヘルプを表示する。
-v, --verbose 冗長出力する。
-o, --out <値> アーカイブ名。デフォルトは "vendor.phar"。
-d, --dir <値> プロジェクトルートディレクトリ。デフォルトはカレントディレクトリ。
--yes 実行時のインタラクティブな確認を省く。
example@localhost:~$
使用例
1. リポジトリを用意
あらかじめオートロードのためのcomposer.json
を書いておきます。
composer.json
{
"name": "mpyw/my-new-package",
"description": "This is a stupid example",
"require": {
"mpyw/my-dependency-1": "@dev",
"mpyw/my-dependency-2": "1.0.0",
},
"autoload": {
"psr-4": {
"mpyw\\MyNewPackage\\": "src/"
}
}
}
2. vendor.phar
の生成
プロジェクトルートディレクトリでcomphar
コマンドを実行すると同一階層にvendor.phar
というファイルが作られます。
example@localhost:~/my-new-package$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files
example@localhost:~/my-new-package$ comphar -v
Project directory: ~/my-new-package
Output filename: ~/my-new-package/vendor.phar
Continue? [y/n]: y
Added: ...
Added: ...
Added: ...
Added: ...
Added: ...
example@localhost:~/my-new-package$
注意点
- 変更がある場合はあらかじめ
composer update
しておいてください。 - 依存パッケージが何も無い場合でも
composer install
またはcomposer update
は必要です。自分自身をオートロードに対応させるためです。
3. 使う・配る
作成した vendor.phar
は vendor/autoload.php
と全く同じように使えます。
最も基本的な使い方
<?php
use mpyw\MyNewPackage\Foo;
require 'vendor.phar';
$foo = new Foo();
後から自分用のオートローディングを追加
<?php
use mpyw\MyNewPackage\Foo;
use mpyw\MyOtherPackage\Bar;
$loader = require 'vendor.phar';
$loader->addPsr4('mpyw\\MyOtherPackage\\', '~/my-other-package/src');
$foo = new Foo();
$bar = new Bar();