关于TP操作方法的缺陷解决

浏览:900 发布日期:2012/03/02 分类:新闻动态
一直以来,TP的操作方法存在一个缺陷,由于TP倡导的是大道至简的原则,所以操作方法的命名就是当前的ACTION_NAME,这也造成了ACTION_NAME的命名可能会和PHP关键字冲突的情况,例如无法定义list或者case这样的操作名(虽然可以通过路由定义解决),其他框架的解决办法是给操作方法的定义增加一个前缀,例如list操作方法可能调用的实际控制器方法可能是actionList 这样,不过这个规则一般是固定的。现在最新的SVN更新解决了这一问题,我们可以通过对action_name标签位置增加行为扩展来解决,也就是说,通过这个标签的行为扩展可以接管操作方法的实际定义问题了,甚至可以动态的设置当前URL中的ACTION_NAME实际访问的控制器方法名。
举个例子来说,如果我们在action_name行为扩展中对操作方法加上action前缀的话,如果我们访问list和case操作的话,可能实际访问的控制器方法是 actionList 和 actionCase。附上,该行为扩展的关键代码:class MyActionNameBehavior extends Behavior {
     public function run(&$actionName){
         // 自定义操作方法名
         $actionName  = 'action'.ucwords($actionName);
         return; 
     }
}
评论( 相关
后面还有条评论,点击查看>>