举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > php单例模式应用场景 PHP 单例模式

php单例模式应用场景 PHP 单例模式

2023-04-26 21:20 PHP设计模式

php单例模式应用场景 PHP 单例模式

php单例模式应用场景 PHP 单例模式

php单例模式应用场景

注:单例模式可能被认为是一种“反模式”。为了获得更好的可测试性和可维护性,建议使用依赖注入。

目标

让应用只存在一个对象的实例,处理所有的调用。

例子

  • 数据库连接器
  • 日志记录器
  • 应用程序的锁定文件(Lock file,理论上整个应用应该只有一个锁文件)

UML 图

Alt Singleton UML Diagram

代码

Singleton.php

<?php

declare(strict_types=1);

namespace DesignPatternsCreationalSingleton;

use Exception;

final class Singleton
{
    private static ?Singleton $instance = null;

    
    public static function getInstance(): Singleton
    {
        if (static::$instance === null) {
            static::$instance = new static();
        }

        return static::$instance;
    }

    
    private function __construct()
    {
    }

    
    private function __clone()
    {
    }

    
    public function __wakeup()
    {
        throw new Exception("Cannot unserialize singleton");
    }
}

测试

Tests/SingletonTest.php

<?php

declare(strict_types=1);

namespace DesignPatternsCreationalSingletonTests;

use DesignPatternsCreationalSingletonSingleton;
use PHPUnitFrameworkTestCase;

class SingletonTest extends TestCase
{
    public function testUniqueness()
    {
        $firstCall = Singleton::getInstance();
        $secondCall = Singleton::getInstance();

        $this->assertInstanceOf(Singleton::class, $firstCall);
        $this->assertSame($firstCall, $secondCall);
    }
}


阅读全文
以上是名动网为你收集整理的php单例模式应用场景 PHP 单例模式全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们