0 follower

サードパーティライブラリを使う

Yii は、より一層 Yii の機能性を拡張するために、 容易にサードパーティライブラリを統合できるよう、入念に設計されています。 プロジェクトでサードパーティライブラリを使用する場合、開発者は、 たびたびクラスの名前付けやファイルのインクルードに関する問題に直面します。 全ての Yii クラスは、C から始まるので、クラスの命名問題はそれほど起こらないでしょうし、 また、Yii はクラスファイルのインクルードを行うために SPL autoload を頼っているので、 同じオートローディング機能を使用するか、クラスファイルを含むように PHP インクルードパスが設定されていれば、うまく他のライブラリーを動作させられます。

以下では、例として、Yii アプリケーションで Zend framework の、 Zend_Search_Lucene コンポーネントを使用する方法を解説します。

まず、protectedアプリケーションベースディレクトリ と仮定し、Zend framework リリースファイルを protected/vendors ディレクトリ以下に展開します。 protected/vendors/Zend/Search/Lucene.php ファイルがある事を確認してください。

次に、コントローラクラスファイルの最初に、下記の行を追加します:

Yii::import('application.vendors.*');
require_once('Zend/Search/Lucene.php');

上記のコードで、クラスファイル Lucene.php をインクルードします。 相対パスを使用するため、正しくファイルを見つけられるように PHP インクルードパスを変える必要があります。 これは、require_once の前に、Yii::import をコールする事で行われます。

上記セットアップの時点で、準備が出来ているため、 下記のように、コントローラアクション中で Lucene クラスを使用できます。

$lucene=new Zend_Search_Lucene($pathOfIndex);
$hits=$lucene->find(strtolower($keyword));