Friday, December 23, 2011

PEAR の使い方

php の PEAR ライブラリといえば、一昔前だと業界標準のように使われてきましたが、最近のPHPフレームワークでは独自にコアライブラリを持つようになっていることもあり、PEAR の利用方法やコンセプトを知らないケースも増えてきているようです。

root 権限がないとインストールや気軽にアップデートできないと思い込んでしまいがちですが、そんなことはありません。インストールされるとはいっても PEAR のコーディングルールに沿った php ファイルが所定のディレクトリに配置されるだけです。

  • /usr/local/lib/php/ (php をソースからインストールした場合)
  • /usr/share/pear/ (yum パッケージ php-pear からインストールした場合)

あたりに PEAR 関連のファイルを確認できます。

pear コマンドは、ここにある php スクリプト pearcmd.php を実行するシェルスクリプトです。

このサーバ共通のディレクトリにインストールするには、root 権限がないといけないケースがほとんどだとおもいますが、後述の方法で任意のディレクトリに設置できます。

/path/to/app/vendors/ に設置するとします。ここに include_path を通しておきます。

ini_set(
    'include_path',
    ini_get('include_path') . PATH_SEPARATOR . '/path/to/app/vendors/'
);

フルパスで指定すれば include_path を通す必要はなさそうですが、依存する PEAR ライブラリの読み込みのため、パスを通しておく必要があります。

// Net_SMTP の例です。include_path が通っている前提でコーディングされています。
require_once 'PEAR.php';
require_once 'Net/Socket.php';

あとは必要な PEAR ライブラリを pear download でダウンロードするなり

$ pear download (PEARパッケージ名)

PEAR のリポジトリ svn.php.net 等から持ってきて配置すればOKです。

実際のプロジェクトでは必要な PEAR ライブラリ全てを個別に持つべきでしょう。別環境に設置した場合に依存するファイルがあるとは限りませんし、サーバ共通のPEARライブラリへのパスについても外しておくことが賢明です。

PEAR は資産を互いに活用するためのコーディングルールとして捉えたほうが良いと思います。Zend Framework も似たコンセプトですね。PEAR パッケージとして公開しなくても、再利用するするクラスライブラリは、これらの規則に沿うと良いと思います。

PEAR 標準コーディング規約
http://pear.php.net/manual/ja/standards.php
Zend Framework PHP 標準コーディング規約
http://framework.zend.com/manual/ja/coding-standard.html