了解PHP的返回引用和局部静态变量


Posted in PHP onJune 04, 2015

先阅读手册
==========
从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 & : 

<?php  

function &returns_reference()  

{  

    $someref = 0;  

    return $someref;  

}  

   

$newref = &returns_reference();//相当于 $newref = &$someref;  

?>

有关引用的更多信息, 请查看引用的解释。

在来看一段很多开源代码喜欢用的单例注册模式

class a{}  

class b{}  

function & aa($name)  

{  

    static $class = array(); //局部静态变量 不随方法的执行结束而消失 而是坚持到整个源程序结束时才结束生命周期  

    if(!$class[$name])       //所以 此处的声明/初始化语句 只在首次声明时起作用  

    {                        //之后再调用此方法时, 静态变量不再重新初始化value  

        $class[$name] = new $name();  

    }  

    return $class[$name];  

}  

$a = & aa('a');  

$b = & aa('b');  

   

$a2 = & aa('a');  

$b2 = & aa('b');  

   

echo $a === $a2 ? '$a和$a2是同一个实例化对象<br/>' : '';  

echo $b === $b2 ? '$b和$b2是同一个实例化对象' : '';
PHP 相关文章推荐
PHP 反射机制实现动态代理的代码
Oct 22 PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
php读取图片内容并输出到浏览器的实现代码
Aug 08 PHP
php计算数组相同值出现次数的代码(array_count_values)
Jan 20 PHP
php通过rmdir删除目录的简单用法
Mar 18 PHP
php简单防盗链实现方法
Jul 29 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
PHP命令Command模式用法实例分析
Aug 08 PHP
PHP lcfirst()函数定义与用法
Mar 08 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 PHP
PHP中4种常用的抓取网络数据方法
Jun 04 #PHP
php实现将上传word文件转为html的方法
Jun 03 #PHP
php 类自动载入的方法
Jun 03 #PHP
php操作memcache缓存方法分享
Jun 03 #PHP
php操作redis缓存方法分享
Jun 03 #PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 #PHP
php使用GD实现颜色渐变实例
Jun 02 #PHP
You might like
新版PHP将向Java靠拢
2006/10/09 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
javascript 获取图片颜色
2009/04/05 Javascript
iframe实用操作锦集
2014/04/22 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
django批量导入xml数据
2016/10/16 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
Python实现弹球小游戏
2020/08/01 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
JPA的优势都有哪些
2013/07/04 面试题
物业管理专业个人的自我评价
2013/11/19 职场文书
毕业晚会主持词
2014/03/24 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
升学宴来宾致辞
2015/07/27 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android