首页 >后端开发 >PHP问题 > 正文

php 能实现单例吗

原创2021-04-01 09:25:550562

php能实现单例,其实现一个单例的方法:1、申请一个私有的静态成员变量来保存该类的唯一实例;2、声明私有的构造方法,防止类外部创建对象;3、声明一个静态公共方法,供外部获取唯一实例。

本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

PHP如何实现一个单例

  • 申请一个私有的静态成员变量来保存该类的唯一实例

  • 声明私有的构造方法,防止类外部创建对象

  • 声明一个静态公共方法,供外部获取唯一实例

这三步走完,就是一个单例了,但是这个单例是不安全的,想要这个单例安全,还需以下两步(如有不完善还请补充)

  • 声明私有的克隆方法,防止对象被克隆

  • 重写__sleep方法,将返回置空,防止序列化反序列化获得新的对象

<?php
/**
 * 单列模式(防止对象克隆、对象序列化反序列化)
 * Created by PhpStorm.
 * User: Jeaforea
 * Date: 2019/3/14
 * Time: 17:56
 */
namespace Kanshenmekan\Buzhunkan\Zaikandasini;
class SetSingleton{
    private static $new; //申请一个私有的静态成员变量来保存该类的唯一实例
    private function __construct() {} //声明私有的构造方法,防止类外部创建对象
    public static function instance () { //声明一个静态公共方法,供外部获取唯一实例
        if (!(self::$new instanceof self)) {
            self::$new = new self;
        }
        return self::$new;
    }
    private function __clone() {} //声明私有的克隆方法,防止对象被克隆
    public function __sleep() { //重写__sleep方法,将返回置空,防止序列化反序列化获得新的对象
        return [];
    }
}

【推荐学习:PHP视频教程

以上就是php 能实现单例吗的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

  • 相关标签:php
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • 专题推荐

    推荐视频教程
  • PHP开发基础之语法篇PHP开发基础之语法篇
  • PHP开发基础之字符串篇PHP开发基础之字符串篇
  • PHP开发基础之类与对象篇PHP开发基础之类与对象篇
  • PHP开发基础之数据库篇(PDO)PHP开发基础之数据库篇(PDO)
  • php8,我来也php8,我来也
  • 视频教程分类