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 生成文字png图片的代码
Apr 17 PHP
PHP测试程序运行时间的类
Feb 05 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
php绘图中显示不出图片的原因及解决
Mar 05 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
初识ThinkPHP控制器
Apr 07 PHP
你不知道的文件上传漏洞php代码分析
Sep 29 PHP
静态html文件执行php语句的方法(推荐)
Nov 21 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
PHP微信PC二维码登陆的实现思路
Jul 13 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 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文件上传主要代码讲解
2013/09/30 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
JavaScript 对象模型 执行模型
2010/10/15 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python语法快速入门指南
2015/10/12 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
战友聚会邀请函
2014/01/18 职场文书
高中生物教学反思
2014/02/05 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
借条格式范本
2015/05/25 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫