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添加MySQL数据记录代码
Jun 07 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
PHP连接操作access数据库实例
Mar 30 PHP
PHP实现简单实用的验证码类
Jul 29 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 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
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
canvas绘制七巧板
2017/02/03 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
介绍Python的Django框架中的QuerySets
2015/04/20 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
zooplus波兰:在线宠物店
2019/07/21 全球购物
《纸船和风筝》教学反思
2014/02/15 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
爱心捐款倡议书
2014/04/14 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android