ficus (0.2.0180) | 2007-10-25 13:17 |
PathInitializerは、ficusで利用するソースコードへのパスなどの設定を簡単に行うためのクラスです。
ficusを利用するアプリケーションでは、次のようなFicus_FicusPathInitializerを利用するクラスを書く必要があります。
Ficus_FicusPathInitializer::setConfigDirectory
Ficus_PropertyFileReaderなどが利用する設定ファイルのルートディレクトリです。
Ficus_FicusPathInitializer::setLibraryDirectory
Ficusが利用しているライブラリへのパスです。
Ficus_FicusPathInitializer::setLoggerDirectory
Ficus_Loggerがログを出力するパスです。
Ficus_FicusPathInitializer::addPath
include_dirにパスを追加します。
Ficus_AutoClassLoader::add
パッケージ名(クラスのプレフィックス)とルートパスを渡すとクラスを自動でロードしてくれるようになります。
FicusAutoLoad::add
S2DaoやSeasar、ClassLoaderのAutoLoadを渡すと、そこからロードしてくれます。
Ficus_FicusPathInitializer::addPath($core, "src"); Ficus_FicusPathInitializer::addAutoLoadPath($core, "Editor_");
この例では、Ficusの基本的なディレクトリ構成に従っています。 クラス名は何でもかまいませんが、ここではパッケージ名を「Sample」とします。
<?php class Sample_SamplePathInitializer { public static function initialize($base){ require_once("$base/lib/ficus/FicusPathInitializer.php"); Ficus_FicusPathInitializer::setConfigDirectory(dirname(__FILE__) . "/../conf/"); Ficus_FicusPathInitializer::setLibraryDirectory(dirname(__FILE__) . "/../lib/"); Ficus_FicusPathInitializer::setLoggerDirectory(dirname(__FILE__) . "/../logs/"); Ficus_FicusPathInitializer::addPath(dirname(__FILE__) . "/../src/"); Ficus_FicusPathInitializer::setUp(); //ここから、 //require_once("ficus/lang/Assert.php"); //などファイルが読み込めます。 $base = Ficus_Dir::createInstance(__FILE__, "src"); $core = new Ficus_ClassPathElement($base->add("src")); Ficus_FicusPathInitializer::addPath($core, "src"); Ficus_AutoClassLoader::add( new Ficus_ClassPathElement($base->add("src")), "Editor"); Ficus_AutoClassLoader::add( new Ficus_ClassPathElement($base->add("lib/ficus")), "Ficus"); Ficus_AutoLoad::add(new Ficus_S2DaoAutoLoad()); Ficus_AutoLoad::add(new Ficus_S2AnAAutoLoad()); Ficus_AutoLoad::add(new Ficus_ClassLoaderAutoLoad()); } } ?>
そしてこのクラスを、アプリケーションのエントリポイントとなるPHPファイルで利用します。
$base = dirname(dirname(__FILE__)); //initialize include_path and so on require_once("$base/src/EditorPathInitializer.php"); Editor_EditorPathInitializer::initialize($base);
この呼び出しのあとは、次のようにファイルを読み込むことが出来ます。
//and so we can read source. require_once("ficus/config/PropertyRegister.php"); Ficus_PropertyRegister::regist("common");
後は、Ficusのクラスを自由に利用することが出来ます。
たとえば、beanを利用したい場合は、
require_once("ficus/beans/Bean.php");とかけます。ただ、AutoLoadしていますので、いきなり
class Sample_Bean extends Ficus_Beanとしてもエラーにはなりません。
上記PathInitializerのコードは、次のようなアプリケーションを想定しています。
-sample |-htdocs ------(ドキュメントルート) | |-index.php -(アプリケーションのエントリポイント) |-src ---------(アプリケーションのソースコード) |-lib ---------(ライブラリのパス、Ficus及びFicusの依存ライブラリ | アプリケーションのライブラリを置く場所) |-conf --------(設定ファイルを置く場所) |-logs --------(ログディレクトリ)
srcに置いたファイルは
src/models/UserEntity.phpであれば
require_once("models/UsersEntity.php");と参照できます。
libに置いたファイルは
lib/ficus/lang/ClassPath.phpであれば
require_once("ficus/lang/ClassPath.php");です。
Ficusでは、基本的にライブラリをSystemグローバルに置かない設計をしています。
追加のライブラリは、libディレクトリに入れるといいでしょう。
後述のphingを用いれば、ライブラリの依存関係を自動で解決できます。
[PageInfo]
LastUpdate: 2007-11-12 16:47:46, ModifiedBy: ishitoya
[License]
Creative Commons 2.1 Attribution
[Permissions]
view:all, edit:login users, delete/config:login users