单例模式的写法 --一段php代码的疑惑
时间:2011-10-20
来源:互联网
最近看了两种单例模式的定义,分别是:
模式1 :
PHP code
模式2:
PHP code
第二种写法我还是理解的很清楚的,但是对于第一种写法,就有很多的问题:
第一:function &instance (){...}中的&意义何在?
第二:两个构造函数写法的取舍,一个为与类名称相同,一个为固定写法__constructor,个人觉得固定写法比较好
第三:php中类直接调用非静态方法是否流行,还是只是为了保持开源程序兼容更多php低版本的一种写法
个人感觉第一种单例模式的写法是为了php的向后兼容,保持开源程序被更多的应用
模式1 :
PHP code
class DBUtil { function &instance() { static $object; if(empty($object)) { $object = new DBUtil(); } return $object; } function DBUtil(){ echo "DBUtil"; } } $dbUtil = DBUtil::instance();
模式2:
PHP code
class DBUtil2 { private static $instance = null; public static function getInstance() { if (self::$instance == null) { self::$instance = new DBUtil2(); } return self::$instance; } function __construct(){ echo "DBUtil2"; } } $dbUtil2 = DBUtil2::getInstance();
第二种写法我还是理解的很清楚的,但是对于第一种写法,就有很多的问题:
第一:function &instance (){...}中的&意义何在?
第二:两个构造函数写法的取舍,一个为与类名称相同,一个为固定写法__constructor,个人觉得固定写法比较好
第三:php中类直接调用非静态方法是否流行,还是只是为了保持开源程序兼容更多php低版本的一种写法
个人感觉第一种单例模式的写法是为了php的向后兼容,保持开源程序被更多的应用
作者: jxlstc001 发布时间: 2011-10-20
哥顶...
作者: jxlstc001 发布时间: 2011-10-20
&instance() 这是对函数的返回值引用传递。我记得php5现在默认是对对象引用传递的,的确是为了向下兼容
作者: dream1206 发布时间: 2011-10-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28