読者です 読者をやめる 読者になる 読者になる

Composerを触ってみる

使い方

Composerが動作にはPHP 5.3.2以上が必要

1. composer.pharをダウンロードする

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

#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /home/ayskw/homepage/comp/composer.phar
Use it: php composer.phar

2. composer.jsonを準備する

$ cat composer.json

{
"require": {
"facebook/php-sdk": "v3.2.3"
}
}

3. composer.jsonに書かれたライブラリをインストールする

$ ./composer.phar install

Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing facebook/php-sdk (v3.2.3)
Downloading: 100%

  • Installing hamcrest/hamcrest-php (v1.2.2)
    Downloading: 100%

  • Installing mockery/mockery (0.9.4)
    Downloading: 100%

Package facebook/php-sdk is abandoned, you should avoid using it. Use facebook/php-sdk-v4 instead.
Writing lock file
Generating autoload files

4. 内容を確認してみる

実行ディレクトリの直下にvendorディレクトリができてその中に入っている

$ ls vendor/

autoload.php composer facebook hamcrest mockery

5. アップデートする

インストールする場合
: ./composer.phar install

アップデートする場合
: ./composer.phar update

インストールされたパッケージを確認する
: ./composer.phar show -i

インストール可能なパッケージを検索する
: ./composer.phar search [keywords]

実行するとできる composer.lock には必ず必要になるので
プロジェクトをバージョン管理する場合などは含めておくこと

パッケージを探す

対象となるパッケージは、基本的に https://packagist.org/ にある。

また、Githubのコミットハッシュを記述することも可能

$ cat composer.json

{
"require": {
"facebook/php-sdk-v4" : "4.0.23",
"kertz/twitteroauth" : "dev-master#e79f24e7a8bc70604c0c78f00b502ff0dc0743b9",
"michelf/php-markdown" : "1.5.0"
}
}

インストールされたパッケージの使い方

vendor配下にできているautoload.phpを読み出すことで使えるようになる

<?php  
    require_once("vendor/autoload.php");

    $my_text = "";  
    $my_text .= "# header\n";  
    $my_text .= "body in [link](http://localhost) ";

    use \Michelf\MarkdownExtra;  
    $my_html = Markdown::defaultTransform($my_text);

    print $my_html;

CakePHPをcomposerでインストールする

cokposer.jsonCakePHPを追加して、configにてインストール先のディレクトリを変更しておく
$ cat composer.json

{
"require": {
"facebook/php-sdk-v4" : "4.0.23",
"kertz/twitteroauth" : "dev-master#e79f24e7a8bc70604c0c78f00b502ff0dc0743b9",
"michelf/php-markdown" : "1.5.0",
"cakephp/cakephp": "2.6.*"
},
"config": {
"vendor-dir": "Vendor/"
}
}

パッケージをアップデートする
$ ./composer update

CakePHPのBakeを使ってプロジェクトを生成
$ Vendor/bin/cake bake project

ちなみに前項の を "." にするとカレントディレクトリにプロジェクトがBakeされる。
自身のベンダーディレクトリにCakePHP自身が入っているというなかなかに面白い状況になる。

デフォルトでは、 bake は CAKE_CORE_INCLUDE_PATH をハードコードするようになっています。
アプリケーションの移植性を高めるためには、 webroot/index.php を修正し、 CAKE_CORE_INCLUDE_PATH を相対パスに変更しましょう。

define(
'CAKE_CORE_INCLUDE_PATH',
ROOT . DS . APP_DIR . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib'
);

応用インストール CakePHP Cookbook 2.x ドキュメント

参考