码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 学习笔记-TP5框架学习笔记进阶之Contorller


    很烂,不建议看。建议略过 ## Controller

    大多是一些模板渲染的方法。从构造函数中就可以看出来,

    public function __construct(Request $request = null)
    {
    $this->view = View::instance(Config::get('template'), Config::get('view_replace_str'));
    $this->request = is_null($request) ? Request::instance() : $request;
    // 控制器初始化
    $this->_initialize();
    // 前置操作方法
    if ($this->beforeActionList) {
    foreach ($this->beforeActionList as $method => $options) {
    is_numeric($method) ?
    $this->beforeAction($options) :
    $this->beforeAction($method, $options);
    }
    }
    }

    刚开始就实例化了View类。想到之前复现的ThinkPHP的SQL注入漏洞,有些测试代码就会调用fetch、assign、display这些方法。而模块开发的开始就是从 application下面开始的。应用模块的控制器如果继承了Controller类,就能直接调用这些方法进行视图渲染。

    这个类还有两个方法:beforeAction和validate

    beforeAction是前置操作:设置 beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名,无值的话为当前控制器下所有方法的前置方法。

    ['except' => '方法名,方法名']
    #表示这些方法不使用前置方法,
    ['only' => '方法名,方法名']
    #表示只有这些方法使用前置方法。
    # demo
    protected $beforeActionList = [
    'first',
    'second' => ['except'=>'hello'],
    'three' => ['only'=>'hello,data'],
    ];
    # 类内所有方法调用前都会调用first方法
    # 类内hello方法不会调用second这个前置方法
    # 只有hello,data方法会前置调用three方法。

    如果你在自己继承了Controller的控制器代码中定义了protected $beforeActionList,那么它就会在构造函数中foreach处理后,调用beforeAction进行only还是except的判断,最后用call_user_func调用。

    call_user_func([$this, $method])

    这种写法是对类内方法的调用,这里的$this指向的是继承Controller类的Index类。也就是说回调的函数必须在Index类中定义好了。

    validate验证器方法主要还是调用的Validate类,应该是为了方便控制器对数据的验证。

    具体流程就是用 加载验证器 的 加载器,来加载验证器。。。。。

    如果传入的$validate是个数组,就先用thinkphp\library\think\Validate.php#rule赋到$this里面。不是数组的话就直接调用。

    点击关注,共同学习!
    [安全狗的自我修养](https://mp.weixin.qq.com/s/E6Kp0fd7_I3VY5dOGtlD4w)


    [github haidragon](https://github.com/haidragon)


    https://github.com/haidragon

  • 相关阅读:
    CodeCraft-21 and Codeforces Round 711 (Div. 2)A-F
    显示器要申请BS 476-7 怎么送样?跟显示屏一样吗??
    卷积神经网络提取的图像特征包括哪些
    Python OpenCV实现文档自动矫正(含源码和测试数据)
    【无标题】算法不能盲目刷!!算法修炼手册(持续更新)
    yolov1代码中的coor_mask.unsqueeze(-1) & coor_mask.expand_as(tensor)
    CAD二次开发--点击窗体按钮后还要再次点击CAD获取焦点才能进行操作?【winform/wpf与CAD焦点切换滞后问题解决办法】
    应用安全系列之四十:登录常见问题以及预防方法
    Linux 命令使用笔记【mapstat】
    《视觉 SLAM 十四讲》V2 第 5 讲 相机与图像
  • 原文地址:https://blog.csdn.net/sinat_35360663/article/details/127775211
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号