CodeIgniter连贯操作的底层原理分析
作者:yanhui_wei 发布时间:2024-05-02 17:15:11
标签:CodeIgniter,连贯操作
本文分析了CodeIgniter连贯操作的底层原理。分享给大家供大家参考,具体如下:
php oop连贯操作原理
->符号其实是传递对象指针的。或许这么说是不对的。
但是,我们可以这么的理解。
不多说。放代码。
普通用法:
<?php
class test
{
public $a='';
public $b='';
public function actiona() {
$this->a="hello";
return $this;
}
public function actionb() {
$this->b="world";
return $this;
}
public function actionc() {
echo $this->a." ".$this->b;
}
}
$oktest=new test();
$oktest->actiona();
$oktest->actionb();
$oktest->actionc();
?>
连贯用法:
<?php
class test
{
public $a='';
public $b='';
public function actiona() {
$this->a="hello";
return $this;
}
public function actionb() {
$this->b="world";
return $this;
}
public function actionc() {
echo $this->a." ".$this->b;
}
}
$oktest=new test();
$oktest->actiona()->actionb()->actionc();
?>
看到了没有。
连起来了。可以把操作串起来。
看起来直观多了。阅读代码时也轻松了很多。
类里面操作都返回了一个指针。
$this.
他等价于你初始化的那个对象 $oktest
所以下面的操作可以连续起来。
试着去掉每个操作里的
return $this
你将会看到错误提示。
例子:
<?php
class sql{
public $select;
public $from;
public $where;
public $order;
public $limit;
public function from($_from='FROM test') {
$this->from=$_from;
return $this;
}
public function where($_where='WHERE 1=1') {
$this->where=$_where;
return $this;
}
public function order($_order='ORDER BY id DESC') {
$this->order=$_order;
return $this;
}
public function limit($_limit='LIMIT 0,30') {
$this->limit=$_limit;
return $this;
}
public function select($_select='SELECT *') {
$this->select=$_select;
return $this->select." ".$this->from." ".$this->where." ".$this->order." ".$this->limit;
}
}
$sql =new sql();
echo $sql->from()->where()->order()->limit()->select();
?>
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。


猜你喜欢
- 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据
- 大大小小也搞过一些数据库设计,见过一些其他人的设计,看过些书,总结总结,经验谈。选表类型:大家都知道mysql的myisam表适合读操作大,
- 在改进SQL Server 7.0系列所实现的安全机制的过程中,Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQ
- 作用域规则命名空间是从名称到对象的映射,Python中主要是通过字典实现的,主要有以下几个命名空间:内置命名空间,包含一些内置函数和内置异常
- 本文实例讲述了django框架使用orm实现批量更新数据的方法。分享给大家供大家参考,具体如下:好久没有用django来改版博客了,突然感觉
- 前言;Python是一种非常具有表现力的语言,它提供了不同的结构来简化开发人员的工作。 该列表是python提供的最受欢迎的数据结构之一。
- <input type=button value=刷新 onclick="window.location.reload()&
- 有时我们用pycharm打开某个文件的时候,默认的打开方式是不正确的,那么如何设置呢?下面小编给大家分享一下。首先我们点击File菜单,然后
- 为什么能实现在线编辑呢? 首先需要ie 的支持,在 ie 5.5以后就有一个编辑状态,就是利用这个编辑状态,然后用javascript 来控
- # -*-coding:utf8 -*- ''' Python常见文件操作示例 os.path 模块中的路径名访问函
- 做开发总得用到数据吧,Linux作为服务器,总得有一个数据库来存储测试用的数据,所以呢,这里附上CentOS6、7安装MySQL5.7的教程
- 1.创建图在tensorflow中,一个程序默认是建立一个图的,除了系统自动建立图以外,我们还可以手动建立图,并做一些其他的操作。下面我们使
- 外部临时表通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表。这种临时表只对当前用户可见,当前会话结束
- 本文实例讲述了Django框架ORM数据库操作。分享给大家供大家参考,具体如下:测试数据:BookInfo表PeopleInfo表一.增加1
- 前言相信大家在日常使用mysql,可能会遇到需要同时更新两张表时,我会采用在同一个事务中使用2句sql语句分别进行更新。其实,这种需要发送2
- 1.IP代理某些网站会检测一段时间内某IP的访问次数,若访问次数过多会禁止访问,这时需要设置一些代理服务器,每隔一段时间换一个代理。IP代理
- 这篇文章主要介绍了Python如何基于smtplib发不同格式的邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- discuz注册时,会把密码按一个规则加密。比如我的密码是123456echo md5("123456");
- 笔者在网上找了很多关于VSCODE配置Go语言的教程,但是由于版本等种种问题,最终都已失败告终。无奈只能在官方文档上寻求帮助,现在终于可以了
- 本文实例讲述了Python中的错误和异常处理操作。分享给大家供大家参考,具体如下:#coding=utf8print ''&