2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

30分でできる!XOOPSで使う外部ライブラリをComposerでラクラク管理♪

Last updated at Posted at 2012-12-26

本稿では、XOOPSでパッケージ管理ツールComposerを使う方法について紹介します。「Composerなんて知らん!」というXOOPSerにもできるかぎりわかりやすく紹介していきます。

セクション1ではComposerが何かまだ知らない方のために簡単にComposerの紹介をします。セクション2では、ComposerをまだMacにインストールしていない方向けにインストール方法を解説します。セクション3では、XOOPSにComposerを組み込む手順について解説します。

1. Composerって何?

composer-logo.png

ComposerはPHPの外部ライブラリを管理してくれるツールです。packagistというウェブサービスにてホスティングされているライブラリをコマンド一発でインストールすることができます。まるでiPhoneのAppStoreのようです。もちろんiPhoneのような画面はありませんが。

外部ライブラリの管理で複雑なのは依存関係の管理です。「このライブラリはPHP5.3.2以上じゃないと動かない」「このライブラリはPEARのあのライブラリに依存していてる」などなど、手動で管理するとなかなかの手間です。Composerはこうした依存関係も含めて管理してくれます。

外部ライブラリなどの依存関係を管理することを、パッケージ管理と呼びます。ComposerはPHPでパッケージ管理のデファクトスタンダードになっています。多くのライブラリがComposerで簡単にインストールできる形で提供されています。なので、Composerを使えるようにしておくと、外部ライブラリの利用がより手軽になります。

2. まずは下準備!ComposerをMacで使えるようにしよう!

お使いのMacで使えるようにするところから始めましょう。Composerはコマンドツールなので、お使いのMacの ~/bin/usr/local/bin などにインストールすることになります。ここでは、/usr/local/binにインストールする方法を紹介します。コマンドに慣れてない人もついてきてください。コマンドは噛み付いたりしませんから :)

ターミナルを立ち上げましょう:

1.png

composer.phar をダウンロードします:

curl -s http://getcomposer.org/installer | php

2.png

うまくダウンロードできれば composer.phar ができているはずです。ls コマンドで確認してみましょう:

3.png

ためにし、composer.phar を叩いてみてもいいでしょう:

./composer.phar --version

4.png

最後に、composer.phar/usr/local/bin ディレクトリに移動します:

sudo mv composer.phar /usr/local/bin/composer

ここでパスワードを聞かれたら、あなたのMacアカウントのパスワードを入れてください。

5.png

which composerとやって/usr/local/bin/composerと出ればインストール成功です。ためしに、composer とだけ入力してコマンドを実行すれば、Composerのヘルプ情報が表示されます。

3. XOOPS Cube で Composer を組み込んでみよう!

XOOPS CubeでComoserを組み込むには次の3つのステップを行います。

  1. バンドル定義ファイル composer.json を作る
  2. Composerでライブラリをインストールする
  3. XOOPS側でComposerのライブラリを読み込むようにする

ステップ2では、PHPのクールなマイクロフレームワーク Silex を組み込む手順を例にとって説明します。

3.1 バンドル定義ファイル composer.json を作ろう!

必要なライブラリの情報は composer.json という名前のファイルに書きます。拡張子が .json なのでJSON形式で書きます。「PHPのなのにiniじゃないのか!」というツッコミはなしでおねがいします^^b

ひとまず、xoops_trust_path に移動します:

cd /Applications/MAMP/htdocs/xoopscube/xoops_trust_path
# これは MAMP で環境を構築した場合の例です

からっぽの composer.json を作ります:

touch composer.json

CotEditorで composer.json を開きます:

open -a CotEditor composer.json 

6.png

内容はこのようにします:

composer.json
{
	"minimum-stability": "dev",
	"require": {
		"silex/silex": "1.0.*"
	}
}

この定義ファイルのより高度な書式についてはDocumentationを御覧ください。

保存すれば定義ファイルの出来上がりです。

3.2 Composerでライブラリをインストールしよう!

さて、定義ファイルの準備ができたので、外部ライブラリをインストールしてみましょう。

インストールは簡単です。composer.json があるディレクトリで次のコマンドを叩くだけです:

composer install

このような感じで、依存関係にあるパッケージも含めて、ツラツラとダウンロード&インストールしてくれます。

7.png

どうでしょう?随分簡単にインストールできるのではないでしょうか。

ちなみに、ここで確認しておきたいのが、vendor ディレクトリができているかどうかです。composerでインストールしたパッケージは全部この vendor ディレクトリに配置されます。中身を覗いてみると、たった今インストールしたパッケージの名前が目に付くと思います。

3.3 XOOPSがComposerのライブラリを読み込めるようにしよう!

ここまでで、外部ライブラリのインストールが完了しました。インストールしたと言っても、ダウンロードしてきて配置したに過ぎません。ライブラリをXOOPSで利用するには、XOOPS側でComposerのライブラリを読み込むようにする必要があります。

Composerでインストールしたライブラリは vendor/autoload.phprequire_once すればすぐに利用できるようになります。(中にはautload.phpに対応していないライブラリもある)

そこで、XOOPSとしては一番最初に読み込まれる mainfile.php に思い切って xoops_trust_path/vendor/autoload.phprequire_once してしまします。

mainfile.php
<?php
// …略

    // Default is 'No'. Choose 'No' if you are unsure.
    define('XOOPS_DB_PCONNECT', 0);

    define('XOOPS_GROUP_ADMIN', '1');
    define('XOOPS_GROUP_USERS', '2');
    define('XOOPS_GROUP_ANONYMOUS', '3');

    require_once XOOPS_TRUST_PATH.'/vendor/autoload.php'; // <-- ここに追加

    // You can select two special module process excuting mode with defining following constants
    //
    //  define('_LEGACY_PREVENT_LOAD_CORE_', 1);
    //    Module process will not load any XOOPS Cube classes.
    //    You cannot use any XOOPS Cube functions and classes.


// …略

余談

「mainfile.phpに書くのやだよっ!」という方は require_once XOOPS_TRUST_PATH.'/vendor/autoload.php'; だけを書いたプリロードを作るという方法もありですね。プロジェクトによってはmainfile.phpを自由に変更できない場合がありますからね。

さて、これで、XOOPS側からComposerのライブラリを利用できるようになったはずです。

確認のために、mainfile.php のとなりに composer_test.php を作って、ライブラリが利用可能かチェックしてみるといいでしょう。

composer_test.php
<?php

require_once 'mainfile.php';

// Silex\Applicationクラスが使える状態か確認っ
var_dump(class_exists('Silex\Application')); // true なら使える! false ならなにか手順にミスがあるかも...

まとめ

Composerとは何か?というところから入って、XOOPS CubeでComposerのライブラリを使う方法までひと通り解説しました。

Composerはとても手軽に外部ライブラリが使えるようになるツールです。XOOPS Cubeのプロジェクトでもcommonなどにとりあえず放り込んでしまいがちなライブラリをComposerで管理するようになるといいですね。是非試してみて下さい!

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?