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 选项及相关信息函数库
Dec 04 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 PHP
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP判断函数是否被定义的方法
Jun 21 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
php表单处理操作
2017/11/16 PHP
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
Python代码的打包与发布详解
2014/07/30 Python
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
为什么Python中没有&quot;a++&quot;这种写法
2018/11/27 Python
python模糊图片过滤的方法
2018/12/14 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
Python logging模块原理解析及应用
2020/08/13 Python
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
摄影展策划方案
2014/06/02 职场文书
委托证明书
2014/09/17 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
门市房租房协议书
2014/12/04 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
python缺失值的解决方法总结
2021/06/09 Python
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers