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 REMOTE_ADDR之获取访客IP的代码
Apr 22 PHP
PHP中图片等比缩放的实例
Mar 24 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
VB中的RasEnumConnections函数返回632错误解决方法
Jul 29 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
php通过baihui网API实现读取word文档并展示
Jun 22 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
PHP大文件分块上传功能实例详解
Jul 22 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 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目录函数实现创建、读取目录教程实例
2011/01/13 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
javascript 短路法代码精简
2009/08/20 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
angularJS开发注意事项
2018/05/26 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
python自动格式化json文件的方法
2015/03/11 Python
Python操作Excel之xlsx文件
2017/03/24 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
时尚圣经:The Fashion Bible
2019/03/03 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
了解AppleTalk协议吗
2014/04/01 面试题
机关单位动员会主持词
2014/03/20 职场文书
应届毕业生求职信
2014/05/26 职场文书
整改通知书格式
2015/04/22 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书