ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
>[warning] 为了规范代码,已废弃 _before_action 的前置方法,修改为 beforeAction 驼峰式写法 ##使用方法 在控制器执行 foo 方法前,定义 beforeFoo 方法,就可以在执行 foo 方法前执行 beforeFoo 方法,可以用来做过滤和模板赋值数据添加,例如 ``` class Test extend Controller { public function foo() { echo "foo<br>"; } protected function beforeFoo() { echo "beforeFoo<br>"; } } // 输出结果 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] 控制器方法调用不区分方法名大小写,不用担心大小写问题