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 ...
随机推荐
- 多态的成员访问特点和好处--java进阶day02
1.多态的成员访问特点 1.成员变量访问特点 分为两个阶段,编译阶段,系统会看父类中是否存在该成员变量,如果存在,运行阶段就会使用父类的成员变量,否则报错 当我们在父类中删去num时,编译直接报错 2 ...
- 枚举与string之间查找与转换
利用TypInfo单元的GetEnumName和GetEnumValue可以遍历任意枚举类型 其实上面程序运行会有err,为什么?因为没有理解和掌握JSON Objects Framework[感到简 ...
- firedac的性能
应该说,目前10.3的方方面面基本正常的坑基本填好了.因此综合考虑还是用datasanp+firedac框架操练. ================================ 数据量2w行,字段 ...
- 2012R2免登录操作
由于许多程序系统,需要等服务器系统起来登录后才让运行.对于远程等一些操带来不方便.查资料: 如何在WINDOWSSERVER2012R2的登陆界面,启动特定的第三方软件? 服务器平台 Operatin ...
- .net WorkFlow 流程转办
WikeFlow官网:www.wikesoft.com WikeFlow学习版演示地址:workflow.wikesoft.com WikeFlow学习版源代码下载:https://gitee.com ...
- zookeeper选主测试
Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统 zookeeper基于目录监听机制来选主,多个客户端节点都可以来对zookeeper上某个目录节点进行监听和注册, ...
- Asp.net mvc基础(十四)Entity Framework
一.EntityFramework介绍 1.ORM:Object Relation Mapping,用操作对象的方式来操作数据库 2.ORM工具有很多,其中Dapper.PetaPoco.NHiber ...
- 里程碑:MCP星球作为国内首个中文MCP社区和MCP工具平台,突破7000个MCP服务!
随着人工智能技术的快速发展,越来越多的开发者开始使用模型上下文协议(Model Context Protocol,简称MCP)来优化大模型与外部工具的交互.作为首个最大的中文MCP工具市场,MCP星球 ...
- AI 辅助开发实战分享:解决Selenium自动化设置Ant时间组件难题
AI 辅助开发实战分享:解决Selenium自动化设置Ant时间组件难题 在软件开发这一块,自动化那可是提高效率.少出错的关键.不过呢,在实际搞自动化开发的时候,开发者们常常会碰到各种各样的麻烦和障碍 ...
- 测试获取 Github 信息
import json import requests from .fetch_github_info import AUTHENTICATED_USER_ENDPOINT, fetch_github ...