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上传文件,创建递归目录的实例代码
Oct 18 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
浅析php原型模式
Nov 25 PHP
php图片的二进制转换实现方法
Dec 15 PHP
10条php编程小技巧
Jul 07 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
实现php删除链表中重复的结点
Sep 27 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
Oct 15 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 23 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 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
php导出生成word的方法
2015/12/25 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
Python库urllib与urllib2主要区别分析
2014/07/13 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
Python选课系统开发程序
2016/09/02 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
python实现拓扑排序的基本教程
2018/03/11 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
团员个人的自我评价
2013/12/02 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
努力学习保证书
2015/02/26 职场文书
草房子读书笔记
2015/06/29 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server