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 ディレクトリに展開されます。
実際に、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)