ThinkPHPノート-CBDアーキテクチャ
2606 ワード
thinkphpは、コアc(core)+動作b(behavior)+駆動d(driver)の3つの方式アーキテクチャを使用する.
Core(コア)
ThinkPHPのコア部分には、コア関数ライブラリ、慣例構成、コアクラスライブラリ(ベースクラスと組み込みドライバ、およびコア動作を含む)が含まれます.
Driver(ドライバ)
Behavior
動作とは何か、動作はアプリケーションの実行中の動作であり、処理である.一部の行為には位置共通性がある.動作が発生する位置をラベルまたはフックと呼ぶことができます.
システムコアのラベル
カスタムラベル
動作の定義
動作定義カスタム拡張動作は、ネーミングスペースの定義ルールに従う限り、コアまたはアプリケーションディレクトリに配置できます.**動作クラスのネーミングには、動作名(アルパカ法、頭文字大文字)+Behavior**動作クラスの定義方法があります.
動作バインド
動作定義が完了すると、ラベルの場所にバインドする必要があります.そうしないと実行されません.適用する動作定義ファイルtagsが必要です.phpファイルで動作とラベルの位置定義を行います.フォーマットは次のとおりです.
単独で実行
動作の呼び出しは、呼び出しにラベルを付ける必要はありません.必要に応じて、コントローラまたは他の場所で動作を直接呼び出すことができます.たとえば、ユーザー権限検出を次のような動作クラスにカプセル化できます.
AuthCheck挙動を定義すると、コントローラの_initializeメソッドでは、
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');
を直接次のように呼び出します.