一文带你搞懂PHP单例模式
发布:smiling 来源: PHP粉丝网 添加日期:2023-06-23 12:11:49 浏览: 评论:0
单例就是单实例的意思,即在系统全局,一个类只创建一个对象,并且在系统全局都可以访问这个对象而不用重新创建。本文将通过示例为大家详细讲解Java单例模式的使用,需要的可以参考一下。
简介
单例模式是创建型对象的一种,用于如何优雅的创建对象。
让一个类最多产生一个对象。
场景
只需要一个对象就能解决并且要使用多次的场景,比如框架的数据库连接。
优点
减少资源消耗,一个对象能完成的事情,就不需要再实例化出来同样的东西。
缺点
对象生命周期都是页面级的,每次页面被执行时,都会重新建立新的对象,都会在页面执行完毕后被清空,这样似乎PHP单例模式意义不大。
示例代码:
- class Demo {
- //声明一个存储对象的方法
- private static $obj;
- //防止当前类的外部进行实例化
- private function __construct() {}
- //防止当前类的外部进行克隆
- private function __clone() {}
- //声明一获取示例的方案
- public static function getInstance() {
- if(self::$obj === null) {
- self::$obj = new self();
- }
- return self::$obj;
- }
- public function otherFunction() {
- //todo ...
- }
- }
测试代码:
- class Demo {
- //声明一个存储对象的方法
- private static $obj;
- //防止当前类的外部进行实例化
- private function __construct() {}
- //防止当前类的外部进行克隆
- private function __clone() {}
- //声明一获取示例的方案
- public static function getInstance() {
- if(self::$obj === null) {
- //在此处打印数据到文件,可清楚的看出来执行了几次。
- //静态方法或者静态属性可以称之为类变量或者类属性,会随着类的加载一并加载到内存当中。
- file_put_contents('F:/stdout.txt', 1,FILE_APPEND);
- self::$obj = new self();
- }
- return self::$obj;
- }
- public function otherFunction() {
- //todo ...
- }
- }
- //类的外部执行了5次实例化操作
- for($i = 0; $i < 5; $i++) {
- Demo::getInstance();
- }
升级版本:
如果每一个类都写一个单例模式的话,会显得有重复的代码,为此可以用继承去解决这个问题。
此时self就需要修改为static,不然self是当前对象而不是子类对象。
static::方法或属性,这种使用称为后期静态绑定。
这和但是static 修饰成员属性或者成员方法,一个是使用,一个是修饰。
- class Singleton {
- //声明一个存储对象的方法
- private static $obj;
- //防止当前类的外部进行实例化
- private function __construct() {}
- //防止当前类的外部进行克隆
- private function __clone() {}
- //声明一获取示例的方案
- public static function getInstance() {
- //检测$obj是否为空并是否不属于当前类
- if(((static::$obj === null) && (! static::$obj instanceof static))) {
- static::$obj = new static();
- }
- return static::$obj;
- }
- }
- class Test extends Singleton {
- public function func() {
- return mt_rand(0, 10);
- }
- }
- //使用:
- Test::getInstance()->func();
Tags: PHP单例模式
- 上一篇:PHP设计模式中观察者模式详解
- 下一篇:最后一页
相关文章
- ·PHP单例模式的学习笔记(2014-06-13)
- ·PHP实现单例模式最安全的做法(2021-02-19)
- ·PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】(2021-11-25)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)