CodeIgniter连贯操作的底层原理分析


Posted in PHP onMay 17, 2016

本文分析了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程序设计有所帮助。

PHP 相关文章推荐
php 代码优化的42条建议 推荐
Sep 25 PHP
php htmlspecialchars加强版
Feb 16 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
php删除文本文件中重复行的方法
Apr 28 PHP
php+ajax实现无刷新分页
Nov 18 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
php PDO属性设置与操作方法分析
Dec 27 PHP
PHP fopen函数用法实例讲解
Feb 15 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 PHP
CI框架常用方法小结
May 17 #PHP
CodeIgniter记录错误日志的方法全面总结
May 17 #PHP
CI框架整合widget(页面格局)的方法
May 17 #PHP
深入剖析浏览器退出之后php还会继续执行么
May 17 #PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
May 17 #PHP
CI框架集成Smarty的方法分析
May 17 #PHP
CI框架中数据库操作函数$this-&gt;db-&gt;where()相关用法总结
May 17 #PHP
You might like
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
php实现单链表的实例代码
2013/03/22 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
JQuery遍历DOM节点的方法
2015/06/11 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python的concat等多种用法详解
2018/11/28 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
Python Web框架之Django框架Model基础详解
2019/08/16 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
详解python itertools功能
2020/02/07 Python
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
竞争上岗演讲稿
2014/01/05 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
2014年终个人工作总结
2014/11/07 职场文书
九年级语文教学反思
2016/03/03 职场文书