関西PHP勉強会からComposer
前半は新原さん、後半は原田さん
宣伝
Twitter: #phpkansai @kphpug
Facebook: 「Kansai PHP Users Group」
Composer 再入門
Composer は前からある(Symfonyとか…)
Today List
- What is Composer
- How do use ?
- Tips
WHat is COmpoer
- 依存管理ツール
- PHP アプリのパッケージ依存を管理
- Node npm/ Ruby Bundler / Python Pip
- PHP 5.3.2 > (CentOS/RPM は5.3.3) 最新の一部機能で5.3.4でしか動かない?
ライブラリ依存を解消
Aライブラリ自身が他のBライブラリを使用し、BがCに…と芋づるなので、Composer が面倒を見る
- composer.json に依存を記述
- コマンドをインストール
- 後は実行
使い方
- composer install
- 依存を composer.json
- composer.phar install
"require": {
"zendframework/zend-db": "2.0.*"
}
コマンド
$ composer.phar install
...
$ l
- composer.json
- composer.lock
- composer.phar
- vendor/
+- autoload.php
+- composer/..
+- zendframework/...
composer.lock
実際にダウンロードされたバージョンが記述されている。
autoloader
autoload.php
を読み込めば、勝手に、パッケージのphpファイルを読み込む。
Tips
Git
GIt で管理した方がいいもの
- composer.json
- composer.lock
Git には入れないもの(再取得できるので)
- composer.phar
- vendor/*
バージョンの更新
-
composer.phar update
でライブラリのアップデート - composer.lock は更新されるので、git でコミットしてアップデート
依存
composer.phar require <パッケージ名> <バージョン名>
で composer.json が作成される
-v -vv -vvv
./composer.phar install -vvv
を付けると、通信ログが見れる。
ヨーロッパとか見に行くので割と遅い。(カナダ経由はよ案件)
パッケージ検索/表示
./composer.phar search <keyword>
./composer.phar show <パッケージ>
open http://packagist.org/
スケルトンプロジェクト
./composer.phar createproject symfony/frame.. symfony 2.3.0
とかとか…
これを使えば、全部面倒を見てくれる。
Composer Proxy JP
公式
Packagist
原田さん @slywalker
TwitterBootstrap に対応したプラグイン BoostCake 作った。composer でインストールできるよー。
今自由の身なので、お仕事あればコソコソと…
Packagist
kof-sample-number を登録してみよう。(簡単な素数判定とか)
- PSR-0 にそった namespace を付けた(vendorname\namespace\namespace\classname)
最近はテストをちゃんと書きましょう。
{
"name": "kof-sample/number",
"require": {
"php": ">=5.4"
},
"autoload": {
"psr-0": {
"Kof": "src/"
}
}
}
あると喜ばれる
typeやらauthorやらlicenseやら何やらうんやら…
Packagist
Githubにgit push したら、packagist に自動更新されるようにするには、APITokenを取ってきて、GithubのService hookにあるPackagistを選んでTokenを入力し、Active を選んでおk.
おまけ
OSS用のTravis-CI
継続的インテグレーションのサイト。git push するたびにテストしてくれる。
language: php
php:
- 5.3
- 5.4
- 5.5
script:
...path..to.script...
GithubのServiceHookのTravis-CIをアクティブにするだけで、自動的にやってくれる。
もう登録済みなので、packagist で kof で探せば出てくるよーっと。
オススメパッケージ
- endroid/qrcode: QRCode 生成
- inlinestyle/inlinestyle: CSS をHTMLのインラインスタイルに適用する。ガラゲー対応するため。あとHTMLメールのOutlook対応とか
- keboola/csv: CSVファイルの読み込み、書き込み
- tedivm/fetch: imap/pop3 を操作する。メールの分解もやってくれる
- chronon/mobile_detect: デバイス判定のライブラリ。かなり細かくやってくれる
- opauth/opauth: OAuth実装する時に使う。各フレームワークにも対応している
まだ沢山ある。まず検索…英語…うへあ…
選ぶ基準
- ダウンロード数
- Travice-CI導入している?(Github のREADME にタグが入ってる)
- ドキュメントが充実している
- 中のコードを読んでみることも大事