TP5的前置操作.md

1、什么是前置操作?

构造方法可以看作类中所有方法的前置操作,而前置操作更强大,不仅可以把某个方法指定为全部方法的前置操作,还能指定为特定方法的前置操作,或者除了某个方法之外所有方法的前置操作。

2、为什么必须继承基类Controller,才能创建前置操作?

Controller.php中有protexted $beforeActionList = [];(即:前置操作列表)

3、前置操作有什么用?如何正确的使用它?

打开默认控制器index.php,内容:

<?php
namespace app\index\controller
class Index extends \think\Controller
{
  protected $beforeActionList=[ //前置方法列表,继承自Controller
    'before1'=>'', //为空,表示before1是当前类中全部操作的前置操作
    'before2'=>['only'=>'demo2'], //before2仅对demo2操作有效
    'before3'=>['except'=>'demo1, demo2'],
  ]; //before3仅对除了demo1,demo2之外的操作有效
  protected $siteName; //自定义属性
  protected function before1()
  {
    $this->siteName = $this->request->param('name');
  }
  protected function before2()
  {
    $this->siteName = '坚决抵制萨德';
  }
  protected function before3()
  {
    $this->siteName = '此生无悔入MC';
  }
  public function demo1()
  {
    return $this->siteName; 
  }
  public function demo2()
  {
    return $this->siteName; 
  }
  public function demo3()
  {
    return $this->siteName; 
  }
}
?>

在url中的写法如下:

tp5/com/index/index/demo1/name/我爱php //输出我爱php
tp5/com/index/index/demo2/name/我爱php //输出坚决抵制萨德,因为before2重写了siteName为坚决抵制萨德
tp5/com/index/index/demo3/name/我爱php //输出此生无悔入MC,因为before3重写了siteName为此生无悔入MC

在之前的版本中,除了前置操作,还有后置操作,不过在ThinkPHP5中,已经取消了形同鸡肋的后置操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,009评论 19 139
  • iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案...
    其实也没有阅读 1,842评论 0 15
  • 1. 分布式系统核心问题 参考书籍:《区块链原理、设计与应用》 一致性问题例子:两个不同的电影院买同一种电影票,如...
    molscar阅读 943评论 0 0
  • 深夜,独自纠结“要不要和你说” 那次,跑了大半个中国去找你 不是心血来潮 不是漫无目的 只是想问问你“关于爱情” ...
    何庆华阅读 284评论 0 2
  • 在俗世中安顿好自己 以爱、以光、以希望…… 光阴飞逝的背后啊 干净地接纳一切 渺小与伟大的事物喔
    伍月的晴空阅读 250评论 2 3