• php链式调用


    我们经常在项目中会写到

    Mode::find()->where()->orderBy()->limit();

    链式调用,那么它是怎么实现的呢?

    昨天看韩天峰大佬的视频,学到了 关键点在于类中方法返回的 return $this

    我们平常使用的时候

    $model = new BaseObject();
    $model->where();
    $model->limit();

    当where 方法中最后返回 $this 的时候我们就可以使用

    $model->where()->limit();

    代码如下:

    <?php
    class BaseObject
    {
        public $where;
        public $limit;
    
        function where($condition)
        {
            $this->where = $condition;
        }
    
        function limit($limit)
        {
            $this->limit = $limit;
        }
    }
    
    $model = new BaseObject();
    $model->where(['id' => 1]);
    $model->limit(10);
    
    var_dump($model);
    

    结果为:

    object(appcontrollersBaseObject)#1 (2) {
    ["where"]=>
    array(1) {
    ["id"]=>
    int(1)
    }
    ["limit"]=>
    int(10)
    }

    链式调用:

    <?php
    class BaseObject
    {
        public $where;
        public $limit;
    
        function where($condition)
        {
            $this->where = $condition;
            return $this;
        }
    
        function limit($limit)
        {
            $this->limit = $limit;
            return $this;
        }
    }
    
    $model = new BaseObject();
    $model->where(['id' => 1])->limit(10);
    
    var_dump($model);
    

    结果为:

    object(BaseObject)#1 (2) {
    ["where"]=>
    array(1) {
    ["id"]=>
    int(1)
    }
    ["limit"]=>
    int(10)
    }

    总结:

    1. 很多知识点,你如果不去思考,不去学习,你一直还是不会的,要养成独立思考和不断学习的习惯

    2. Leary by Practice,看到大佬当年桌面的屏保,通过实践学习,自己还是动手太少,一直停留在想的阶段,所以这个阶段多写代码,多做事

  • 相关阅读:
    hdu2067 简单dp或者记忆化搜索
    hdu2067 简单dp或者记忆化搜索
    洛谷 P4555 [国家集训队]最长双回文串(Manacher)
    洛谷 P1659 [国家集训队]拉拉队排练(Manacher)
    洛谷 P3805【模板】manacher算法
    UVA 1335 Beijing Guards(二分答案)
    UVA 1267 Network(DFS)
    UVA 11520 Fill the Square(模拟)
    UVA 12097 Pie(二分答案)
    UVA 12124 Assemble(二分答案)
  • 原文地址:https://www.cnblogs.com/zhangpengfei5945/p/13957334.html
Copyright © 2020-2023  润新知