zoukankan      html  css  js  c++  java
  • 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,看到大佬当年桌面的屏保,通过实践学习,自己还是动手太少,一直停留在想的阶段,所以这个阶段多写代码,多做事

  • 相关阅读:
    LeetCode#34 Search for a Range
    Multiplication algorithm
    LeetCode#31 Next Permutation
    Spring boot之Hello World
    spring boot 简介
    分布式-网络通信-线程
    分布式-网络通信-协议
    分布式-架构图
    9.leetcode70-climbing stairs
    8.Leetcode69 Sqrt(x) 笔记
  • 原文地址:https://www.cnblogs.com/zhangpengfei5945/p/13957334.html
Copyright © 2011-2022 走看看