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 相关文章推荐
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
简单的pgsql pdo php操作类实现代码
Aug 25 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
一个非常实用的php文件上传类
Jul 04 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
PHP 实现缩略图
Mar 09 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
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
python实现决策树分类
2018/08/30 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
python 实现任务管理清单案例
2020/04/25 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
Oracle的内存结构(Memory structures)
2015/06/10 面试题
销售自荐信
2013/10/22 职场文书
优质的学校老师推荐信
2013/10/28 职场文书
军训自我鉴定范文
2014/02/13 职场文书
亲子拓展活动方案
2014/02/20 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
淘宝活动总结范文
2014/06/26 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
法定授权委托证明书
2014/09/27 职场文书
Java实现多文件上传功能
2021/06/30 Java/Android