php设计模式--单例模式
2015-11-28 18:54
573 查看
单例模式顾名思义:
这个类只能实例化一次.不能被克隆.一般被用来处理数据库操作等需要频繁使用,但是多次实例化又很浪费内存的类.
下面是一个带有注释的实例:
<?php
#单例模式
######################
class Single{
private static $instance; #定义私有静态属性,用来存放本类实例化后的对象.
private function __construct(){} #私有构造方法,防止new实例化操作.
public static function getInstance()
{
if(!(self::$instance instanceof self))
#instanceof又两个用途
# 1.判断前面那个是否是后面的对象
# 2.判断前面的是否实现类后面的接口
#这里如果$instance属性内部已经存储了对象,那么无需在实例化了
{
self::$instance=new self;
}
return self::$instance; #返回属性自身,当然现在已经是对象了.
}
public function info()
{
echo "this is a test"; #测试方法.
}
public function __clone()#如果外部进行克隆那么返回一个致命错误.
{
trigger_error('Clone is not allow!',E_USER_ERROR);
}
}
$e=Single::getInstance(); #调用静态方法,这个方法也是单例模式的精髓.
$e->info();
?>
本文出自 “吴泽辉的php博客” 博客,请务必保留此出处http://phpwzh.blog.51cto.com/6651035/1717766
这个类只能实例化一次.不能被克隆.一般被用来处理数据库操作等需要频繁使用,但是多次实例化又很浪费内存的类.
下面是一个带有注释的实例:
<?php
#单例模式
######################
class Single{
private static $instance; #定义私有静态属性,用来存放本类实例化后的对象.
private function __construct(){} #私有构造方法,防止new实例化操作.
public static function getInstance()
{
if(!(self::$instance instanceof self))
#instanceof又两个用途
# 1.判断前面那个是否是后面的对象
# 2.判断前面的是否实现类后面的接口
#这里如果$instance属性内部已经存储了对象,那么无需在实例化了
{
self::$instance=new self;
}
return self::$instance; #返回属性自身,当然现在已经是对象了.
}
public function info()
{
echo "this is a test"; #测试方法.
}
public function __clone()#如果外部进行克隆那么返回一个致命错误.
{
trigger_error('Clone is not allow!',E_USER_ERROR);
}
}
$e=Single::getInstance(); #调用静态方法,这个方法也是单例模式的精髓.
$e->info();
?>
本文出自 “吴泽辉的php博客” 博客,请务必保留此出处http://phpwzh.blog.51cto.com/6651035/1717766
相关文章推荐
- 新测 thinkphp3.2 整合 PHPMailer 发送邮件
- hibernate继承关系映射方法(三)--每个具体类一张表TPC
- php 安全模式限制函数
- PHP如何检测一个UTF-8字符串里有没有繁体字
- PHP获取服务器端的相关信息
- PHP获取服务器端的相关信息
- PHP获取服务器端的相关信息
- PHP获取服务器端的相关信息
- PHP获取服务器端的相关信息
- FTP服务学习笔记之ssl/tls安全认证配置(3)
- 【Win】使用L2TP出现809错误
- PHP函数操作数组(集合贴)
- PHPExcel类库使用手册
- CI框架uri去掉index.php
- ThinkPHP框架--邮箱激活功能
- PHP高手干货分享:要大大提高PHP效率
- php获取网卡的MAC地址
- PHP的学习--可变函数
- ThinkPHP3.2.3生成多张缩略图
- yii2 控制器里 action 大小写组合造成的路由问题