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 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
PHP入门学习笔记之一
Oct 12 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
Aug 09 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
深入Nginx + PHP 缓存详解
Jul 11 PHP
一个比较不错的PHP日历类分享
Nov 18 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
PHP会话控制实例分析
Dec 24 PHP
PHP 信号管理知识整理汇总
Feb 19 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
php png失真的原因及解决办法
Oct 24 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中定时计划任务的实现原理
2013/01/08 PHP
php多线程并发实现方法
2016/09/30 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
js 加载并解析XML字符串的代码
2009/12/13 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
python的Template使用指南
2014/09/11 Python
python中split方法用法分析
2015/04/17 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
python编写简单端口扫描器
2019/09/04 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Python实现多线程下载脚本的示例代码
2020/04/03 Python
python读取图像矩阵文件并转换为向量实例
2020/06/18 Python
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
施工人员岗位职责
2013/12/12 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
订货会邀请函
2015/01/31 职场文书
中秋节慰问信
2015/02/15 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
安全生产学习心得体会
2016/01/18 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js