当前位置:首页 > PHP

php实现单例模式

2026-04-02 23:34:35PHP

单例模式简介

单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。在PHP中实现单例模式通常用于数据库连接、日志记录器等需要全局唯一实例的场景。

实现单例模式的关键点

私有化构造函数,防止外部直接实例化 私有化克隆方法,防止通过克隆创建新实例 静态变量保存唯一实例 静态方法提供全局访问入口

PHP单例模式基础实现

class Singleton
{
    private static $instance;

    private function __construct()
    {
        // 防止外部实例化
    }

    private function __clone()
    {
        // 防止克隆
    }

    public static function getInstance()
    {
        if (!isset(self::$instance)) {
            self::$instance = new self();
        }
        return self::$instance;
    }
}

线程安全改进版

在PHP多线程环境下(如pthreads扩展),需要考虑线程安全问题:

class ThreadSafeSingleton
{
    private static $instance;
    private static $lock = false;

    private function __construct()
    {
    }

    public static function getInstance()
    {
        if (!isset(self::$instance)) {
            while (self::$lock) {
                usleep(100);
            }
            self::$lock = true;
            self::$instance = new self();
            self::$lock = false;
        }
        return self::$instance;
    }
}

延迟初始化变体

某些情况下可能需要延迟初始化:

php实现单例模式

class LazySingleton
{
    private static $instance;

    private function __construct()
    {
        // 资源密集型初始化操作
    }

    public static function getInstance()
    {
        if (!isset(self::$instance)) {
            self::$instance = new self();
        }
        return self::$instance;
    }
}

单例模式使用示例

$instance1 = Singleton::getInstance();
$instance2 = Singleton::getInstance();

var_dump($instance1 === $instance2); // 输出 true

注意事项

单例模式可能引入全局状态,使代码更难测试 在PHP-FPM环境下,每个请求都是独立进程,单例只在当前请求生命周期内有效 考虑使用依赖注入替代单例模式以提高可测试性

标签: 模式php
分享给朋友:

相关文章

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…

php 伪静态实现

php 伪静态实现

PHP 伪静态实现方法 伪静态(URL Rewrite)是一种通过服务器配置将动态URL转换为静态URL的技术,提升URL的可读性和SEO效果。以下是几种常见的实现方式: 使用Apache的mod_…

php session实现购物车

php session实现购物车

PHP Session 实现购物车 初始化 Session 确保在使用 Session 前调用 session_start() 函数。通常放在 PHP 文件的最顶部。 <?php sessio…

单例模式的实现PHP

单例模式的实现PHP

单例模式的基本概念 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。适用于需要全局唯一对象的场景,如数据库连接、日志管理等。 PHP 单例模式的实现步骤 私有化构造函数…