thinkphp中的behavior和action

理解ThinkPHP中的CBD“核心+行为+驱动”中的行为 Behavior  

2013-08-11 13:14:03|  分类: 默认分类 |  标签:thinphp3  cbd  行为  

|字号

 订阅

可以理解为一个函数的指针指向了别的地方的函数。
如果学过C++可以用这个一个例子来解释:
#include<iostream>
using namespace std;
void fun_behavior_1(){
cout<<"behavior_1_body"<<endl;
}
void fun_behavior_2(){
cout<<"behavior_2_body"<<endl;
}
class A{
private:
void (*behavior_1)();
void (*behavior_2)();
void (*behavior_3)();
public:
A(){
//init
behavior_1 = NULL;
behavior_2 = NULL;
behavior_3 = NULL;
//from somewhere to get the behavior_1 and behavior_2's function body.
behavior_1 = (fun_behavior_1);
behavior_2 = (fun_behavior_2);
//also, behavior_3 is not found
}
void run(){
if(behavior_1){
behavior_1();
}
if(behavior_2){
behavior_2();
}
if(behavior_3){
behavior_3();
}
}
};

int main(){
A a;
a.run();
}
所以 在thinkphp中的行为也类似于这样。定义好了函数的指针(就是tags数组的的key)
然后来调用key对应的value所描述的行为函数。
用更简单的例子来说明就是(PHP):
class A{
function Behavior_1(){
echo "behavior_1";
}
function Behavior_2(){
echo "behvior_2";
}
function doSomething(){
echo "doSomething, code by yourself";
}
function run(){
Behavior_1();
doSomething();
Behavior_2();
}
}
A a = new A();
a->run();

这里的Behavior_1 Behavior_2函数可以改成自己的代码,就类似与自己指定,不指定的话 就执行默认的。
doSomething 就是在两个Behavior中间的函数,类似与action_begin 和action_end中间的action。

官方文档上也说明了类似于java中的aop思想。
3.1.2的文档中包含了
app_init应用初始化标签位
path_infoPATH_INFO检测标签位
route_check路由检测标签位
app_begin应用开始标签位
action_name操作方法名标签位
action_begin控制器开始标签位
view_begin视图输出开始标签位
view_template视图模板解析标签位
view_parse视图解析标签位
view_filter视图输出过滤标签位
view_end视图输出结束标签位
action_end控制器结束标签位
app_end应用结束标签位
这几种默认的。就是类似与上面的函数指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值