Ethna 2.1.* まではコントローラへマネージャーを登録し
'マネージャ名' => '表名',
なら、ActionClass や ViewClassの中では次のように使用。
http://ethna.jp/ethna-document-dev_guide-appobj-manager.html#y9120283
で廃止され、ActionClass や ViewClassの中で必要になった時点で次のように使用。
データベースの items表 users表を、マネージャー mgrItems と mgrUsers で処理するシチュエーション。
'マネージャ名' => '表名',
なら、ActionClass や ViewClassの中では次のように使用。
$this->マネージャー名->メソッド();Ethna 2.5.0 では下記URL記載の理由
http://ethna.jp/ethna-document-dev_guide-appobj-manager.html#y9120283
で廃止され、ActionClass や ViewClassの中で必要になった時点で次のように使用。
$m = $this->backend->getManager('表名'); $m->メソッド();あちこちに、この'表名'が散在し始めるので次のような試み。
データベースの items表 users表を、マネージャー mgrItems と mgrUsers で処理するシチュエーション。
コントローラー
class APPID_Controller extends Ethna_Controller{ : var $manager = array( 'mgrItems'=>'items', 'mgrUsers'=>'users', );アクションクラスの継承元
class APPID_ActionClass extends Ethna_ActionClass{ : function newManager( $manager ){ $c =& $this->backend->getController(); $l = $c->getManagerList(); if( isset( $l[$manager] ) ){ $this->$manager =& $this->backend->getManager( $l[$manager] ); }else{ $this->backend->log( LOG_ERR, "No define APPID_Controller::manager('%s'=>'*')", $manager ); } }ビュークラスの継承元
class APPID_ViewClass extends Ethna_ViewClass{ : function newManager( $manager ){ $c =& $this->backend->getController(); $l = $c->getManagerList(); if( isset( $l[$manager] ) ){ $this->$manager =& $this->backend->getManager( $l[$manager] ); }else{ $this->backend->log( LOG_WARNING, "No define APPID_Controller::manager('%s'=>'*')", $manager ); } }
それぞれ、必要な箇所か、頻繁に使うマネージャーなら ActionClass と ViewClass の継承元のコンストラクタで$this->newManager( 'mgrItems' ); $this->newManager( 'mgrUsers' );などとすれば$this->mgrItems->メソッド() $this->mgrUsers->メソッド()として使える。
●マネージャーを抽象的な名称にして、実ファイル名・DB表名などに非依存。
●newManager() は何度呼んでも1つだけのインスタンス。