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クラスをインポートしたりLithiumとCakePHPのモデルや他のクラスを並行して使えます。LITHIUM_APP_PATHはLibraries.phpがincludeされる前に定義するのを忘れないで下さい。