ThinkPHPノート-CBDアーキテクチャ

2606 ワード

thinkphpは、コアc(core)+動作b(behavior)+駆動d(driver)の3つの方式アーキテクチャを使用する.
Core(コア)
ThinkPHPのコア部分には、コア関数ライブラリ、慣例構成、コアクラスライブラリ(ベースクラスと組み込みドライバ、およびコア動作を含む)が含まれます.
Driver(ドライバ)
//      
ThinkPHP/Library/Think/Cache/Driver //       
ThinkPHP/Library/Think/Db/Driver //        
ThinkPHP/Library/Think/Log/Driver //         
ThinkPHP/Library/Think/Session/Driver // Session    
ThinkPHP/Library/Think/Storage/Driver //       
ThinkPHP/Library/Think/Template/Driver //            
ThinkPHP/Library/Think/Template/TagLib //              

Behavior
動作とは何か、動作はアプリケーションの実行中の動作であり、処理である.一部の行為には位置共通性がある.動作が発生する位置をラベルまたはフックと呼ぶことができます.
システムコアのラベル
app_init         
module_check        (**3.2.1    **)
path_info PATH_INFO     
app_begin        
action_name         
action_begin         
view_begin          
view_template          
view_parse        
template_filter          
view_filter          
view_end          
action_end         
app_end        

カスタムラベル
//   my_tag     
tag('my_tag'); 
//          
\Think\Hook::listen('my_tag');

tag           ,             ,          ,     ,
tag('my_tag',$params); //   my_tag     

        ,        ,           :
tag('my_tag','param'); //   my_tag     

動作の定義
動作定義カスタム拡張動作は、ネーミングスペースの定義ルールに従う限り、コアまたはアプリケーションディレクトリに配置できます.**動作クラスのネーミングには、動作名(アルパカ法、頭文字大文字)+Behavior**動作クラスの定義方法があります.
namespace Home\Behavior;
//**3.2.1  **  ,          Think\Behavior 
use Think\Behavior; 
//**3.2.1  **  ,          Think\Behavior 
class TestBehavior extends Behavior {
 //            run
//run          ,       。
 public function run(&$params){
 if(C('TEST_PARAM')) {
     echo 'RUNTEST BEHAVIOR '.$params;}
 }
}

動作バインド
動作定義が完了すると、ラベルの場所にバインドする必要があります.そうしないと実行されません.適用する動作定義ファイルtagsが必要です.phpファイルで動作とラベルの位置定義を行います.フォーマットは次のとおりです.
return array(
 '    1'=>array('   1','   2',...), 
 '    2'=>array('   1','   2',...), 
 );

単独で実行
動作の呼び出しは、呼び出しにラベルを付ける必要はありません.必要に応じて、コントローラまたは他の場所で動作を直接呼び出すことができます.たとえば、ユーザー権限検出を次のような動作クラスにカプセル化できます.
namespace Home\Behavior;
use Think\Behavior;
class AuthCheckBehavior extends Behavior {
 //             run
 public function run(&$return){
 if(C('USER_AUTH_ON')) {
 //                 $return = true;
 //    halt      
 }
 }
}

AuthCheck挙動を定義すると、コントローラの_initializeメソッドでは、B('Home\Behavior\AuthCheck');を直接次のように呼び出します.