Gogs c0f4aa0e2f update .gitignore 6 anos atrás
..
src 553bb1a839 jwt 3.3 6 anos atrás
test 553bb1a839 jwt 3.3 6 anos atrás
.scrutinizer.yml 553bb1a839 jwt 3.3 6 anos atrás
.travis.yml 553bb1a839 jwt 3.3 6 anos atrás
LICENSE 553bb1a839 jwt 3.3 6 anos atrás
README.md 553bb1a839 jwt 3.3 6 anos atrás
composer.json 553bb1a839 jwt 3.3 6 anos atrás
phpunit.xml.dist 553bb1a839 jwt 3.3 6 anos atrás

README.md

Clock

Total Downloads Latest Stable Version

Branch master Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight

Yet another clock abstraction...

The purpose is to decouple projects from DateTimeImmutable instantiation so that we can test things properly.

Installation

Package is available on Packagist, you can install it using Composer.

composer require lcobucci/clock

Basic usage

Simply create an make your objects dependent on the interface Lcobucci\Clock\Clock and use SystemClock or FrozenClock to retrieve the current time:

<?php

use Lcobucci\Clock\Clock;
use Lcobucci\Clock\SystemClock;
use Lcobucci\Clock\FrozenClock;

function filterData(Clock $clock, array $objects): array
{
    return array_filter(
        $objects,
        function (stdClass $object) use ($clock): bool {
            return $object->expiresAt > $clock->now();
        }
    );
}

// Object that will return the current time based on the given timezone
$clock = new SystemClock(new DateTimeZone('UTC'));

// Test object that always returns a fixed time object
$clock = new FrozenClock(
    new DateTimeImmutable('2017-05-07 18:49:30')
);

$objects = [
    (object) ['expiresAt' => new DateTimeImmutable('2017-12-31 23:59:59')],
    (object) ['expiresAt' => new DateTimeImmutable('2017-06-30 23:59:59')],
    (object) ['expiresAt' => new DateTimeImmutable('2017-01-30 23:59:59')],
];

var_dump(filterData($clock, $objects)); // last item will be filtered