cse/base-singleton

单例设计模式,允许轻松使用单例类。

1.0.0 2019-05-12 15:36 UTC

This package is auto-updated.

Last update: 2024-09-19 03:07:24 UTC


README

英文 | 俄语

SINGLETON CSE BASE

Travis (.org) Codecov Scrutinizer code quality

Packagist Minimum PHP Version Packagist GitHub repo size

单例设计模式,允许轻松使用单例类。

项目仓库: https://github.com/cs-eliseev/base-singleton

演示

class ExampleSingleton
{
    use SingletonTrait;
    ...
}
$instance = ExampleSingleton::getInstance();
$instanceName = ExampleSingleton::getInstance('instance_name');

简介

CSE BASE 是一组用 PHP 编写的库,专门用于扩展您的类。

一组创建类的基本方法可以帮助您快速创建 Web 应用程序。SINGLETON CSE BASE 允许轻松简单地创建单例类。

CSE BASE 是为了快速开发 Web 应用程序而创建的。

CSE Base 项目

以下是一些有关如何初始化库和执行常见命令的信息。

安装

您可以在 这里 找到此项目的最新版本。

Composer

执行以下命令以获取包的最新版本

composer require cse/base-singleton

或者 composer.json 文件应包含以下内容

{
    "require": {
        "cse/base-singleton": "*"
    }
}

Git

在本地上克隆此仓库

git clone https://github.com/cs-eliseev/base-singleton.git

下载

在此处下载最新版本.

用法

查看测试模型: ModelSingleton.php

查看示例: examples-singleton.php

创建模型单例

示例

class ModelSingleton
{
    use SingletonTrait;

    protected $param = 0;

    /**
     * @param int $param
     */
    public function setParam(int $param): void
    {
        $this->param = $param;
    }

    /**
     * @return int
     */
    public function getParam(): int
    {
        return $this->param;
    }
}

创建实例单例

示例

$instance = ModelSingleton::getInstance();
$instance->setParam(10);
$instance->getParam();
// 10

按名称创建单例实例

$instance2 = ModelSingleton::getInstance('new');
$instance2->setParam(20);
$instance->getParam();
// 10
$instance2->getParam();
// 20

恢复单例实例

$instance3 = ModelSingleton::getInstance();
$instance3->setParam(30);
$instance->getParam();
// 30
$instance2->getParam();
// 20
$instance3->getParam();
// 30

单例异常

__CLONE

try {
    $clone = clone ModelSingleton::getInstance();
} catch (CSESingletonException $e) {
    // Singleton can not using clone
}

__SLEEP

try {
    $serialize = serialize(ModelSingleton::getInstance());
} catch (CSESingletonException $e) {
    // Singleton can not serialize
}

__WAKEUP

try {
    ...
} catch (CSESingletonException $e) {
    // Singleton can not deserialize
}

测试与代码覆盖率

PHPUnit 用于单元测试。单元测试确保类和方法确实执行了预期的工作。

PHPUnit 的一般文档可以在 https://phpunit.de/documentation.html 找到。

要运行 PHPUnit 单元测试,请执行以下操作

phpunit PATH/TO/PROJECT/tests/

如果您想生成代码覆盖率报告,请使用以下命令

phpunit --coverage-html ./report PATH/TO/PROJECT/tests/

使用了 PHPUnit 默认配置

phpunit --configuration PATH/TO/PROJECT/phpunit.xml

捐赠

您可以通过 这里 支持此项目。您还可以通过为项目做出贡献或报告错误来提供帮助。提出关于功能的建议也是非常好的。任何帮助都是受欢迎的。

许可

SINGLETON CSE BASE 是开源 PHP 库,MIT 许可证授权。请参阅 许可文件 了解更多信息。

GitHub @cs-eliseev