当前位置:首页 > 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实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php实现定时

php实现定时

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

php实现伪静态

php实现伪静态

PHP 实现伪静态的方法 伪静态(URL Rewrite)是一种将动态URL转换为看似静态URL的技术,提升SEO友好性和用户体验。以下是几种常见的实现方式: 使用 Apache 的 mod_rew…