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获取当前文件所在目录 getcwd()函数
May 13 PHP
过滤掉PHP数组中的重复值的实现代码
Jul 17 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
PHP的SQL注入过程分析
Jan 06 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
PHP删除目录及目录下所有文件的方法详解
Jun 06 PHP
php中simplexml_load_string使用实例分享
Feb 13 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
May 04 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
Yii框架实现多数据库配置和操作的方法
May 25 PHP
php校验公钥是否可用的实例方法
Sep 17 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错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
详解Python文件修改的两种方式
2019/08/22 Python
python实现按关键字筛选日志文件
2019/12/24 Python
python实现简单猜单词游戏
2020/12/24 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
高中学生评语大全
2014/04/25 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
董事长开业致辞
2015/07/29 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android