composer 便利だった
Composer が便利です。 php の autoload 系の機能を上手に使ってくれるので、コンポーネントの管理がとても楽です。
composer が便利なので、パッケージ管理を丸投げすることにした。
すぐにできる Composer のインストール
composer を使いたいPHPのプロジェクトディレクトリを作成、
mkdir sample cd sample
そこにcomposerの実行ファイルを用意する。
curl -sS https://getcomposer.org/installer | php
これで準備完了
私の場合の実行結果
takuya@rena:~/Desktop/sample$ curl -sS https://getcomposer.org/installer | php #!/usr/bin/env php All settings correct for using Composer Downloading... Composer successfully installed to: /Users/takuya/Desktop/sample/composer.phar Use it: php composer.phar takuya@rena:~/Desktop/sample$ ls
パッケージインストール
あとはパッケージをインストールします。
composer.json の作成
インストールの依存関係やバージョンを指定する composer.json を作る
composer.json の作成
takuya@rena:~/Desktop/sample$ cat - > composer.json { "require": { "slim/slim": "*" } }
takuya@rena:~/Desktop/sample$ JSON.parse composer.json { require: { 'slim/slim': '*' } }
とりあえず、json としてシンタックスチェック。正しければなんとか動くよ。
composerでインストール
slim をインストール設定を書いたのでインストール
takuya@rena:~/Desktop/sample$ php composer.phar install Loading composer repositories with package information Installing dependencies (including require-dev) - Installing slim/slim (2.4.3) Loading from cache slim/slim suggests installing ext-mcrypt (Required for HTTP cookie encryption) Writing lock file Generating autoload files
インストール完了
確認してみます。
takuya@rena:~/Desktop/sample$ tree -L 2 . ├── composer.json ├── composer.lock ├── composer.phar └── vendor ├── autoload.php ├── composer └── slim 3 directories, 4 files
インストールできてました。やったね。
パッケージを使う。
composer.phar でインストールしたパッケージを使います。autoload を使うと楽ちん index.phpでこれをを書けばいい
<?php require 'vendor/autoload.php';
やってみた
takuya@rena:~/Desktop/sample$ cat - > index.php <?php require 'vendor/autoload.php'; $app = new \Slim\Slim(array( 'debug' => true, 'log.level' => \Slim\Log::DEBUG, 'log.enabled' => true, 'cookies.encrypt' => true, //cookie )); var_dump($app);
実行してみた。
takuya@rena:~/Desktop/sample$ php index.php object(Slim\Slim)#2 (6) { ["container"]=> object(Slim\Helper\Set)#3 (1) { ["data":protected]=> array(9) {
動いている。楽ちん。
パッケージの追加
composer.json に パッケージを追加する。
{ "require": { "slim/slim": "2.*", "evernote/evernote": "1.*" } }
追加したら、インストール
php composer.phar install
これでパッケージの追加完了
パッケージを探す
composer のパッケージ一覧からも探すことが出来る。
https://packagist.org/explore/
もちろん、コマンドでも探すことが出来る。
php composer.phar search キーワード
やってみた。
takuya@rena:~/Desktop/sample$ php composer.phar search twig/twig twig/twig Twig, the flexible, fast, and secure template language for PHP twig/extensions Common additional features for Twig that do not directly belong in core frood/twig Twig extension for The Frood VC framework. twig/twig2 Twig, the flexible, fast, and secure template language for PHP meerkat/twig Twig, the flexible, fast, and secure template language for PHP simonjodet/twig Twig, the flexible, fast, and secure template language for PHP appt/twig Integrate Twig with ZF2. twig/tracelytics Tracelytics helpers for the Twig templating engine symfony/twig-bridge Symfony Twig Bridge phpdocumentor/template-responsive-twig Responsive modern template for phpDocumentor for Twig symfony/twig-bundle Symfony TwigBundle zf-commons/zfc-twig Zend Framework 2 Module that provides a Twig rendering strategy and extensions to render actions or trigger events from your templates asm89/twig-cache-extension Cache fragments of templates directly within Twig. jms/twig-js twig.js, flexible, secure, and high-performance templating engine for Javascript cedriclombardot/twig-generator A generator for PHP code based on Twig template engine
git に追加する場合
composer で入れたパッケージはデプロイするときに再度 composer installを行えばいいので、わざわざ パッケージをgit 管理下に置く必要もないと思います。
.gitignore
vendor/ composer.lock
とかやってvendor 以下を外しておいても、十分じゃないでしょうか。
自分のレポジトリを取り込む場合
自分のレポジトリを取り込む場合は repository の配列に vcs で取り込むといいようです。
{ "repositories" : [ { "type" :"vcs", "url" : "/Users/takuya/repos/negi" } ], "require": { "negi/negi" : "*" } }
pear のライブラリを取り込む場合
PEARの取り込んで使うことが出来ます。レポジトリの一つとして取り込めます。
{ "repositories":[{ "type":"pear", "url":"http://pear.php.net" }], "require": { "pear-pear/HTTP_Request2":"2.1.*" } }
まぁ、いまさらPEARでも無いと思いますが。
composer が遅い場合の対処用法
Composer install って遅いですよね。
JPミラーを選択して遅いインストールを高速化することができます。
composer config -g repositories.packagist composer https://packagist.jp
こうすると、爆速になります。
よく間違えるのがhttp / https ですね。いまはHTTPSで参照します。
[Composer\Downloader\TransportException] Your configuration does not allow connections to http://packagist.jp/packages.json. See https://getcomposer.org/doc /06-config.md#secure-http for details.
http でアクセスするとcomposerに叱られます。
https でアクセスしても駄目なときは、フレッツの閉域網のIPv6を疑ってみましょう。
ComposerがLimit Exceededになる場合
Composer install でGithub の制限に引っかかることがあったので、共有トークンじゃなくて、自分のトークンを使う
php composer intall で github rate Limitと言われたときの対処方法 - それマグで!
参考資料
PHPのパッケージ管理Composerを使う ベーシック エンジニアブログ Basic::Engineer.deploy(blog)
2019-02-14 記述追加
いくつか記述を更新しました。