Zend Frameworkと連携する


今日は、appendicesの2つを読みました。あと残りはFAQだけです。

参照元appendices/integrating_zend_framework.wiki

Lithiumアプリケーション内でZendフレームワークを使う為には、まずapp/config/bootstrap.phpにいくつかの設定を追加する必要があります。

設定

下記の設定は、incubatorよりも先にtrunkからチェックアウトしたものを追加しています。pathはtrunk/library/Zendを直接librariesディレクトリにおいた場合 、うまくいかないことに注意して下さい。

Libraries::add("Zend", array(
    "prefix" => "Zend_",
    'path' => '/htdocs/libraries/Zend/trunk/library/Zend',
    "includePath" => '/htdocs/libraries/Zend/trunk/library',
    "bootstrap" => "Loader/Autoloader.php",
    "loader" => array("Zend_Loader_Autoloader", "autoload"),
    "transform" => function($class) { return str_replace("_", "/", $class) . ".php"; }
));

Libraries::add("Zend_Incubator", array(
    "prefix" => "Zend_",
    "includePath" => '/htdocs/libraries/Zend/incubator/library',
    "transform" => function($class) { return str_replace("_", "/", $class) . ".php"; }
));

使いかた

設定を追加しましたので、全てにおいて重要なステートメントであるuseを「use \Zend_Mail_Storage_Pop3」のように追加することでZendフレームワークのクラスにアクセスできます。

namespace app\controllers;

use Zend_Mail_Storage_Pop3;

class EmailController extends \lithium\action\Controller {

    public function index() {
        $mail = new Zend_Mail_Storage_Pop3(array(
            'host' => 'localhost', 'user' => 'test', 'password' => 'test'
        ));
        return compact('mail');
    }

}

Zend_Mailクラスの使い方に関してはZendフレームワークから提供されているメールドキュメントを参照して下さい。

外部アプリケーションでLithiumを使う


参照元appendices/using_in_external_applications.wiki

Lithiumは非常に柔軟ですので、コアフレームワークをいくつかのアプリケーションの環境で起動することができます。そして必要な機能だけを使うことができます。まず、Lithiumが正しくインストールされていることを確認して下さい。

Lithiumのクラスを使う為には、ライブラリを管理しているクラスをただロードし、Lithiumのライブラリー自体を次のように登録することです。

include "/path/to/classes/libraries/lithium/core/Libraries.php";

lithium\core\Libraries::add('lithium');

"path/to/class"はinclude pathと相対パスであるかもしれません。

CakePHPと連携する

CakePHPはこの設定を追加できるapp/config/boostrap.phpという便利な場所を提供しています。それに加えて、Lithiumの(モデルやコントローラといった)クラスをCakephpの相当するクラスと一緒に使いたいのでしたら、次の行をboostrap.phpに追加することができます。

define("LITHIUM_APP_PATH", dirname(__DIR__));
lithium\core\Libraries::add('app', array('bootstrap' => false));

これを正しくappディレクトリをLithiumのクラスローダに設置するとappのデフォルトのbootstrapファイルを使えなくすることができます。CakePHPのクラスで名前空間のあるappクラスをインポートしたりLithiumCakePHPのモデルや他のクラスを並行して使えます。LITHIUM_APP_PATHはLibraries.phpがincludeされる前に定義するのを忘れないで下さい。

データコネクションを定義する

Lithiumのデータレイヤを使うつもりですたら、LITHIUM_APP_PATH/config内にconnections.phpを作成する必要があります。動的にコネクションを定義するのでしたら、このファイルを空に出来ます。ですが、規約によりこのファイルはデータベースとWebサービスのコネクションを設定する為に使われます。これを行う方法の詳しい情報はlithium\data\Connectionsを見て下さい。