应用场景:
-
在一次http请求中,多个地方使用到了数据库连接,使用单例可以只需要创建一个连接。
-
一个庞大的类被多次实例化的时候,会浪费巨大的内存空间。使用单例模式可以使多个对象共享内存中存在类的静态空间。
代码示例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<?php
//final防止类被继承
final
class
DBHelper{
//初始化实例 含义:$install = new DBHelper()...
private
static
$instance
=null;
//构造器私有,防止类外部实例化
private
function
__construct(){
//连接数据库操作
}
//获取实例
public
static
function
getInstance(){
if
(!(self::
$instance
instanceof
self)){
self::
$instance
=
new
self;
}
return
self::
$instance
;
}
//防止实例被克隆
private
function
__clone(){
}
}
?>
|
验证:
|
1
2
3
4
|
$conn1
=DBHelper::getInstance();
$conn2
=DBHelper::getInstance();
echo
$conn1
===
$conn2
;
|
本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/2054528,如需转载请自行联系原作者