FuelPHP Composerでライブラリー•パッケージを管理するには


FuelPHP は 1.6 からライブラリーやパッケージの管理に Composer を利用できるようになりました(1.6 リリースノート)。

Composer関連のファイルは、生成したプロジェクト直下にあります。

  • composer.json
  • composer.lock
  • composer.phar

comporser.json を開いてみるとデフォルトで、以下の3つのみ指定があります。

{
    ...
    "require": {
        "php": "<=5.3.3",
        "monolog/monolog": "1.5.*",
      "fuelphp/upload": "2.0.1"
    },
    ...
}

Composerでインストールされたライブラリーは fuel/vendor ディレクトリに展開されます。

fuelphp-composer-fuel-vendor

実際に、Composerを利用して、ライブラリーを追加してみます。
今回は、とあるプロジェクトにてZendのXMLRPCを利用したかったので、それを追加してみます。

Comporserで利用可能なパッケージの検索は、https://packagist.org/search コマンドで検索できます。

$ php composer.phar search <keyword<

xmlrpcで検索してみると以下の用にたくさんヒットしました。

$ php composer.phar search xmlrpc
zf1/zend-xmlrpc Zend Framework 1 XmlRpc package
zendframework/zend-xmlrpc 
lstrojny/fxmlrpc Fast and tiny XML/RPC client with bridges for various HTTP clients
brikou/zend_xml-rpc Zend Framework XmlRpc Library
pear/xml_rpc2 XML-RPC client/server library
seven/symfony-rpc-bundle This Symfony bundle provide easy way to create XMLRPC server
bdunogier/xmlrpcbundle Simple XML RPC Server for Symfony 2
phpxmlrpc/jsxmlrpc A javascript library for building xmlrpc and jsonrpc clients
phpxmlrpc/extras A collection of extensions, addons and other stuff that might be of use for development of xml-rpc (and jsonrpc, soap) based applications
phpxmlrpc/phpxmlrpc A php library for building xmlrpc clients and servers
zf1/zend-xmlrpc Zend Framework 1 XmlRpc package
silverstripe/drupal-connector An external-content connector that connects to Drupal 5+ via the XMLRPC support in the services module.
james75/supervisord-php Simple PHP XMLRPC Client for http://supervisord.org

次に、指定するバージョンを調べるために、show コマンドでパッケージの詳細を表示します。

$ php composer.phar show zf1/zend-xmlrpc
name     : zf1/zend-xmlrpc
descrip. : Zend Framework 1 XmlRpc package
keywords : ZF1, framework, xmlrpc, zend
versions : dev-master, * 1.12.3
type     : library
license  : BSD-3-Clause
source   : [git] https://github.com/zf1/zend-xmlrpc.git b442f2b394f4934394c8a3bbf1a6e9ea647f7b8c
dist     : [zip] https://api.github.com/repos/zf1/zend-xmlrpc/zipball/b442f2b394f4934394c8a3bbf1a6e9ea647f7b8c b442f2b394f4934394c8a3bbf1a6e9ea647f7b8c
names    : zf1/zend-xmlrpc

autoload
psr-0
Zend_XmlRpc =< library/

requires
php <=5.2.11
zf1/zend-exception self.version
zf1/zend-http self.version
zf1/zend-server self.version

1.12.3 を利用可能なことがわかったので composer.json に追加します。

{
    ...
    "require": {
        ...
        "zf1/zend-xmlrpc": "1.12.*"
    },
    ...
}

update コマンドで追加したライブラリーがインストールされます。

$ php composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing zf1/zend-exception (1.12.3)
    Loading from cache

  - Installing zf1/zend-server (1.12.3)
    Loading from cache

  - Installing zf1/zend-locale (1.12.3)
    Loading from cache

  - Installing zf1/zend-loader (1.12.3)
    Loading from cache

  - Installing zf1/zend-validate (1.12.3)
    Loading from cache

  - Installing zf1/zend-uri (1.12.3)
    Loading from cache

  - Installing zf1/zend-http (1.12.3)
    Loading from cache

  - Installing zf1/zend-xmlrpc (1.12.3)
    Loading from cache

zf1/zend-locale suggests installing zf1/zend-registry (Used in special situations or with special adapters)
zf1/zend-validate suggests installing zf1/zend-date (Used in special situations or with special adapters)
zf1/zend-validate suggests installing zf1/zend-filter (Used in special situations or with special adapters)
zf1/zend-validate suggests installing zf1/zend-registry (Used in special situations or with special adapters)
zf1/zend-uri suggests installing zf1/zend-date (Used in special situations or with special adapters)
zf1/zend-uri suggests installing zf1/zend-filter (Used in special situations or with special adapters)
zf1/zend-uri suggests installing zf1/zend-registry (Used in special situations or with special adapters)
Generating autoload files

Composer によるライブラリーのインストール手順は以上です。

アプリケーションとしては、Zend_Loader_Autoloader::getInstance() を呼びださなくても Zend_XmlRpc_Client が利用できるようになりました(実際には zf1パッケージは若干問題があるため修正が必要でしたが)。

以下のようなメッセージが表示された時は self-update もしておきましょう。

$ php composer.phar update
Warning: This development build of composer is over 30 days old. It is recommended to update it by running "composer.phar self-update" to get the latest version.
Loading composer repositories with package information
Updating dependencies (including require-dev)
,