Presenter クラス

Presenter クラスは "ビュー" へのオブジェクトラッパーとして振る舞い、ビューに関連するすべてのロジックを抽象化し、 コントローラから分離するために使われます。プレゼンタの使用法についての詳細をお読み下さい。 コントローラのようにプレゼンタも before()after() メソッドをサポートしますので、ビューの準備のための全般的なコードのために使えます。

forge($presenter, $method = 'view', $auto_filter = null, $view = null)

forge メソッドは新しい Presenter オブジェクトを返します。

静的 はい
パラメータ
パラメータ デフォルト 説明
$presenter 必須 プレゼンタの名前。デフォルトは View 記法による関連するビュー。
$method
'view'
ビューのレンダリングの準備をするためのプレゼンタのメソッド名。プレゼンタは、例えば、同じビューで違ったレイアウトを生成するために、複数の準備メソッドを持つことができます。
$auto_filter
null
自動エンコーディングの設定をするために true または false に設定、メイン設定 (app/config/config.php) がデフォルト。
$view
null
カスタムビュー名、プレゼンタ名から判別できないビューがロードされる場合に利用されます。
返り値 新しい Presenter オブジェクト
// APPPATH/classes/presenter/admin/index.php の中の Presenter_Admin_Index クラスを使い
// APPPATH/views/admin/index.php ビューファイルのための
// Presenter オブジェクトを作成する

$presenter = Presenter::Forge('admin/index');

// プレゼンタの custom() メソッドを使いビューを別にレンダリングする
$presenter = Presenter::Forge('admin/index', 'custom');

// 独自のビューを使う
$presenter = Presenter::Forge('admin/index', 'custom', null, 'admin/different/view');

// あるいは、独自のビューオブジェクトを使う
$view = View::forge('admin/different/view', array(
	'menu' => $menu,
	'articles' => $articles,
	'footer_links' => $footer_links,
));

$presenter = Presenter::Forge('admin/index', 'custom', null, $view);

get_view()

get_view メソッドはプレゼンタに関連するビューのインスタンスを返します。

静的 いいえ
パラメータ なし
返り値 関連するビューオブジェクト
// プレゼンタのインスタンスを作成する
$presenter = Presenter::Forge('admin/index');

// そして関連するビュー
$view = $presenter->get_view();

view()

view メソッドはプレゼンタがレンダリングされる際に呼ばれるデフォルトのメソッドです。ビューのレンダリングの準備のためのロジックを含みます。

静的 いいえ
パラメータ なし
Presenter の概要ページを参照してください。

プレゼンタは、ビューを生成するための複数のロジックの集合が必要な場合に使う、複数の準備メソッドを持つことができます。 例えば、ヘッダとフッタなしのビューを生成する独自メソッド、あるいは、モバイルデバイスに最適化されたビューを生成するメソッドを持てます。 プレゼンタは、コントローラをジェネリックに保ち、プレゼンタにより生成される出力がどうあるべきかを知る必要をなくすこくとができます。

View オブジェクトの互換性

Presenter クラスは、コードの中で、ビュークラスと取り換え可能です。これは、もし、ビューで始めてその後、追加のビューの準備ロジックの必要性を感じ、 プレゼンタを使いたくなったら、 ビューを forge する代わりにプレゼンタを forge する以外、 コントローラのコードを変更する必要はないことを意味します。

そのため、プレゼンタは関連するビューの set()set_safe()bind()auto_filter() そして render() メソッドを見えるようにしています。 関連するビューオブジェクトのプロパティにアクセスしセットするマジックゲッターおよびセッターを持っています。

プレゼンタは、静的メソッド set_global()bind_global() をサポートしません。もし、ビューにグローバル変数が必要な場合は、 View クラスでそれらをセットしなければなりません。プレゼンタにとっては、それは透過的です。

もしあなたがプレゼンタを拡張し、プレゼンタオブジェクトが生成された後もビューインスタンスと交換可能にしたい場合、 プレゼンタはデータコンテナを持っていないことを知ってください。代わりに関連するビューオブジェクトを全てのデータを保存するために使っています。これは、 もしビューオブジェクトを新しい何かに交換すれば、あなたは、そこにセットされているすべての変数を失うことを意味します!