wmde/clock

一个简单的接口,用于获取当前时间而不绑定到全局系统资源。包含测试替身!

1.0.0 2018-09-26 02:09 UTC

README

Build Status Scrutinizer Code Quality Code Coverage Latest Stable Version Download count

一个简单的接口,用于获取当前时间而不绑定到全局系统资源,同时提供了便于测试的简单实现。

Clock 使用

function yourCode(Clock $clock) {
    $time = $clock->now(); // Returns DateTimeImmutable. No global access and easily testable
}

Clock 接口

interface Clock {
    public function now(): \DateTimeImmutable;
}

提供实现

  • SystemClock:使用全局系统资源
  • StubClock:返回构造函数中提供的值。在测试中很有用
  • CollectionClock:按顺序返回指定的值。在测试中很有用
  • IncrementingClock:返回无限增长的起始时间。在测试中很有用

安装

要在项目中使用 Clock 库,只需将 wmde/clock 依赖添加到项目的 composer.json 文件中。以下是一个仅定义 Clock 1.x 依赖的最小 composer.json 文件示例

{
    "require": {
        "wmde/clock": "~1.0"
    }
}

开发

为了开发,您需要安装 Docker 和 Docker-compose。不需要本地的 PHP 和 Composer。

sudo apt-get install docker docker-compose

运行 Composer

要使用 Composer 拉取项目依赖项,请运行

make composer install

您可以通过 make run 运行其他 Composer 命令,但当前不支持参数标志。如果您需要执行此类命令,可以按照此格式执行

docker run --rm --interactive --tty --volume $PWD:/app -w /app\
 --volume ~/.composer:/composer --user $(id -u):$(id -g) composer composer install --no-scripts

其中 composer install --no-scripts 是正在执行的命令。

运行 CI 检查

要运行所有 CI 检查,包括 PHPUnit 测试、PHPCS 风格检查和覆盖率标签验证,请运行

make

运行测试

要仅运行 PHPUnit 测试,请运行

make test

要仅运行 PHPUnit 测试的子集或以其他方式传递标志给 PHPUnit,请运行

docker-compose run --rm app ./vendor/bin/phpunit --filter SomeClassNameOrFilter

发布说明

1.0.0 (2018-09-26)

初始发布,包含 ClockSystemClockStubClockCollectionClockIncrementingClock