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(app\controllers\BaseObject)#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)
}
总结:
很多知识点,你如果不去思考,不去学习,你一直还是不会的,要养成独立思考和不断学习的习惯
Leary by Practice,看到大佬当年桌面的屏保,通过实践学习,自己还是动手太少,一直停留在想的阶段,所以这个阶段多写代码,多做事
php链式调用的更多相关文章
- 如何写 JS 的链式调用 ---》JS 设计模式《----方法的链式调用
1.以$ 函数为例.通常返回一个HTML元素或一个元素集合. 代码如下: function $(){ var elements = []; ;i<arguments.length;i++){ v ...
- 【Java】子类的链式调用
记录最近在项目设计中遇到的一个小问题. 前提:有这样两个POJO类,它们都可以通过链式调用的方式来设置其属性值,其中一个类继承了另一个类. 问题:通过链式调用,子类对象访问父类方法后,如何使返回对象仍 ...
- hasOwnProperty 递归 简单回调 链式调用
1.hasOwnProperty 函数的返回值为Boolean类型.如果对象object具有名称为propertyName的属性,则返回true,否则返回false. function Box(){ ...
- swift学习笔记之-可选链式调用
//可选链式调用 import UIKit /*可选链式调用(Optional Chaining) 1.在可选值上请求和调用该可选值的属性.方法及下标的方法,如果可选值有值,那么调用就会成功,返回可选 ...
- Swift2.1 语法指南——可空链式调用
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- JavaScript设计模式——方法的链式调用
方法的链式调用: (function() { //私有类 function _$ (els) { this.elements = []; for(var i = 0, len = els.length ...
- jQuery的XX如何实现?——2.show与链式调用
往期回顾: jQuery的XX如何实现?——1.框架 -------------------------- 源码链接:内附实例代码 jQuery使用许久了,但是有一些API的实现实在想不通.于是抽空看 ...
- Swift-09-可空链式调用(Optional Chaining)
我对这个的理解就是:我们有可能会用到其他的属性或者方法,当我们在使用其他的时候,可以使用点语法去访问另一个的属性,这样的使用,就形成了链式访问. 可空链式调用是一种可以请求和调用属性.方法及下表的过程 ...
- 关于JavaScript中的setTimeout()链式调用和setInterval()探索
http://www.cnblogs.com/Wenwang/archive/2012/01/06/2314283.html http://www.cnblogs.com/yangjunhua/arc ...
- js实现方法的链式调用
假如这里有三个方法:person.unmerried();person.process();person.married();在jQuery中通常的写法是:person.unmerried().pro ...
随机推荐
- iframe高度自适应 完美解决
前言 一直被iframe的高度自适应的问题困扰着,今天终于找到完美解决方案,加上以下css即可. css iframe { display: block; border: none; height: ...
- 【SpringCloud】SpringCloud config分布式配置中心
SpringCloud config分布式配置中心 概述 分布式系统面临的---配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务 ,每个服务的粒度相对较小,因此系统中会出现大量的服务.由于 ...
- Java的IO模型、Netty原理详解
1.什么是IO 虽然作为Java开发程序员,很多都听过IO.NIO这些,但是很多人都没深入去了解这些内容. Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的 ...
- 学习unigui【23】uniDBGrid的使用摘要
Unidbgrid自动调整列宽 UniDBGrid1 -> ClientEvents -> ExtEvents [Ext.data.Store[store] ] add store.loa ...
- GPT-SoVITS Windows 配置与推理笔记(自用)
GPT-SoVITS Windows 配置与推理笔记(自用) 这是给自己留的备份,方便下次查.Windows 端配置和推理为主,代码为核心,直接干货. 环境准备 系统:Windows 10/11 Py ...
- C 冒泡排序和选择排序
冒泡排序 理论概念: 从第一个数开始,将相邻的两个数比较,第一个数和第二个数比较,比如说是从小到大的排序,要是后面的数比前面的小则交换两个的位置,这样第一轮比较基数后最大的数就到了最后面,接着进行第二 ...
- Python科学计算系列10—数论
1.常用操作 代码如下: # coding=utf-8 from sympy import * from sympy.ntheory.modular import solve_congruence, ...
- MySQL 在设计表(建表)时需要注意什么?
MySQL 在设计表(建表)时需要注意的要点 设计数据库表是 MySQL 开发中非常重要的一环.合理的表结构设计可以提升性能.减少存储开销,并提高维护性.以下是一些关键的注意事项: 1. 明确需求和数 ...
- 1703. 得到连续 K 个 1 的最少相邻交换次数
1703. 得到连续 K 个 1 的最少相邻交换次数 class Solution { public int minMoves(int[] nums, int k) { List<Integer ...
- easy-query隐式Group革命性OLAP优化JAVA下最强查询ORM没有之一子查询合并
easy-query JAVA下最强查询ORM没有之一的任意子查询合并革命性OLAP优化 前言 对于大部分OLTP而言的查询市面上常见的orm已经能很好的处理,只要建立好对象关系那么就可以非常简单的实 ...