php 设计模式 - 单例
2016-05-23 15:47
671 查看
概述:
作为对象的创建模式,单例确保某一个内在系统中只存在一个实例,它不可以创建副本。 克隆函数(__clone )以及构造函数(__construct )必须声明为私用, 防止外部程序 创建一个新类 ,而失去单例模式的意义。 PHP 语言是一种解释型的语言,在页面执行完成后,所有的相关资源都会被回收。PHP在语言级别上,不能像C#,JAVA编译型语言一样,没办法让某个对象长距内存。 然而在单一请求场景时,还是可以通过单例模式来共享对象,比如数据库连接对象。
class DbConnection { private static $_instance; private static $token = 0; public static function getInstance() { if (static::$_instance instanceof DbConnection) { return static::$_instance; } // 随机生产一个 token 标示当前内 static::$token = rand(100, 1000); static::$_instance = new DbConnection(); return static::$_instance; } // 克隆函数以及构造函数必须声明为私用, // 防止外部程序 创建一个新类 ,而失去单例模式的意义。 private function __clone() { } private function __construct() { } public function open() { echo "init times:" . static::$token . '<br/>'; } }单例与static 类的 比较:
1、singleton 能够很好的保持对象的面相对象,比如静态工具类则可以使用 static。 2、单例可以实现自某接口,可以继承自某类。静态类也可以继承自某类,但是就没法使用父类里面的protect成员了。
相关文章推荐
- 给PHP安装和开启curl扩展
- [转载]自己编写 php 在线问卷调查程序
- thinkphp中的常见静态常亮
- php用smtp发送邮件
- Yii自学笔记(一)
- 11. php的错误和异常处理(一)
- windows 7 x64搭建FTP服务器
- php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳
- PHP实战——科研立项(ThinkPHP)
- PHP中获得mac地址
- PHP相关1
- php 获取客户端的ip、地理信息、浏览器信息、本地真实ip
- PHP使用HMAC-SHA1+base64签名方法
- 编译PHP常用参数
- PHP to exe
- PHP Warning: file_put_contents(".."):failed to open stream: Permission denied in...
- PHP 注册审核
- PHP数据库
- PHP 会话控制
- 开启 php的curl插件中的ssl功能