tp5控制器 一个样例明白控制器的定义及使用
<?php namespace app\index\controller; use think\Controller; /** * Class User * @package app\index\controller * @author weiyongqiang <hayixia606@163.com> * 其实tp5中可以不集成Controller但是我们使用了Controller中的方法所以要集成 */ class User extends Controller { /** * @var array * 我来定义前置操作,所谓前置操作就是在我配置的操作执行之前执行我 */ protected $beforeActionList = [ 'checksession', //在任何操作执行前执行checksession方法 'islogin' => ['except'=>'login'], //在除login之外的其他方法执行前先执行islogin方法 'removesession' => ['only'=>'logout'], //在logout执行前先执行removesession ]; /** * @param $name * 如果在本控制器中找不到该操作那就运行我 */ public function _empty($name) { echo $name.'这个操作不存在'; } /** * 我是控制器初始化方法,执行此控制器的任何操作之前必须先执行我 */ public function _initialize() { Logs::write(time().'访问'.$_SERVER['PHP_SELF']); } /** * @return bool * 我是前置操作 */ public function checksession() { return empty(session('USERINFO')); } /** * @return bool * 我是前置操作 */ public function islogin() { $userInfo = session('USERINFO'); return $userInfo.expires > time(); } /** * @return bool * 我是前置操作 */ public function removesession() { return session('USERINFO', null); } /** * 用户登录操作 */ public function login() { if(用户已经登录了){ $this->redirect('Home/index', 302); //或者使用助手函数 //redirect('Home/index'); } if(用户信息没有问题){ $this->success('登录成功', 'Home/index'); }else{ $this->success('出错了请稍后再试'); } } /** * 用户退出操作 */ public function logout() { redirect('Home/index'); } }以上样例中涉及到的知识有:
控制器的定义控制器的初始化方法:_initialize()前置操作: 配置protected $beforActionList跳转和重定向:success和error重定向为redirect空操作:_empty()当你访问的方法不存在时就执行