>[warning] 为了规范代码,已废弃 _before_action 的前置方法,修改为 beforeAction 驼峰式写法
##使用方法
在控制器执行 foo 方法前,定义 beforeFoo 方法,就可以在执行 foo 方法前执行 beforeFoo 方法,可以用来做过滤和模板赋值数据添加,例如
```
class Test extend Controller
{
public function foo()
{
echo "foo
";
}
protected function beforeFoo()
{
echo "beforeFoo
";
}
}
// 输出结果
beforeFoo
foo
```
>[warning] 为了安全,请将前置控制器的访问属性设置为 protected,防止前置控制器被当做开放方法可以通过链接访问得到
##实现方式
###不修改官方源码:
>[info] 只要继承该控制器才能使用,推荐
在公共控制器,例如tpadmin的公共控制器application/admin/Controller.php文件的_initialize方法里加上:
```
// 前置方法
$beforeAction = "before" . ucfirst($this->request->action());
if (method_exists($this, $beforeAction)) {
$this->$beforeAction();
}
```
###直接修改官方源码:
>[warning] 任何地方可以使用,但是 ThinkPHP5 框架更新会出现问题,不建议修改官方源码,修改后一定要做标记,下次更新再同步去改
在thinkphp/library/think/Controller.php 第63行加上:
```
// 前置方法
$beforeAction = "before" . ucfirst($this->request->action());
if (method_exists($this, $beforeAction)) {
$this->$beforeAction();
}
```
>[info] 控制器方法调用不区分方法名大小写,不用担心大小写问题