了解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 相关文章推荐
最小化数据传输――在客户端存储数据
Oct 09 PHP
推荐个功能齐全的发送PHP邮件类
Jan 03 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
选择PHP作为网站开发语言的原因分享
Jan 03 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 PHP
php调用nginx的mod_zip模块打包ZIP文件
Jun 11 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
php+mysql开发中的经验与常识小结
Mar 25 PHP
php策略模式简单示例分析【区别于工厂模式】
Sep 25 PHP
使用laravel的migrate创建数据表的方法
Sep 30 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
vue如何判断dom的class
2018/04/26 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
python基础教程之五种数据类型详解
2017/01/12 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
flask中的wtforms使用方法
2018/07/21 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
python两种注释用法的示例
2020/10/09 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
法律专业自我鉴定
2013/10/03 职场文书
2013年军训通讯稿
2014/02/05 职场文书
单位绩效考核方案
2014/05/11 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
入党积极分子群众意见
2015/06/01 职场文书
小学班主任工作随笔
2015/08/15 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
图解上海144收音机
2021/04/22 无线电
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
Java并发编程必备之Future机制
2021/06/30 Java/Android