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 相关文章推荐
手把手教你使用DedeCms的采集的图文教程
Mar 11 PHP
删除无限分类并同时删除它下面的所有子分类的方法
Aug 08 PHP
php 截取字符串并以零补齐str_pad() 函数
May 07 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
使用PHP实现微信摇一摇周边红包
Jan 04 PHP
php获取当前月与上个月月初及月末时间戳的方法
Dec 05 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
Apr 26 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动态图像的创建
2006/10/09 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
2013/05/15 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
Python KMeans聚类问题分析
2018/02/23 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
python for 循环获取index索引的方法
2019/02/01 Python
python字符串查找函数的用法详解
2019/07/08 Python
python中bytes和str类型的区别
2019/10/21 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
python如何导入依赖包
2020/07/13 Python
金士达面试非笔试
2012/03/14 面试题
门前三包责任书
2014/04/15 职场文书
安全协议书范本
2014/04/21 职场文书
教师评语大全
2014/04/28 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书