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学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
解析Linux下Varnish缓存的配置优化
Jun 20 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
Aug 16 PHP
在Windows XP下安装Apache+MySQL+PHP环境
Feb 22 PHP
Thinkphp关闭缓存的方法
Jun 26 PHP
PHP 返回13位时间戳的实现代码
May 13 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
Jul 09 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
YII框架批量插入数据的方法
Mar 18 PHP
PHP编译configure时常见错误的总结
Aug 17 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 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 静态化实现代码
2009/03/20 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
2021/03/09 PHP
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
详解ES6中的三种异步解决方案
2018/06/28 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
什么是接口(Interface)?
2013/02/01 面试题
英语专业个人求职自荐信
2013/09/21 职场文书
综合办公室主任职责
2013/12/16 职场文书
女方离婚起诉书
2015/05/18 职场文书
运动会1000米加油稿
2015/07/21 职场文书
高一化学教学反思
2016/02/22 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
使用 JavaScript 制作页面效果
2021/04/21 Javascript
关于EntityWrapper的in用法
2022/03/22 Java/Android
我去timi了,一起去timi是什么意思?
2022/04/13 杂记