1. Go to this page and download the library: Download stratadox/clock library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
stratadox / clock example snippets
namespace Your\Project;
use Stratadox\Clock\Clock;
class SomeFactory
{
private $clock;
public function __construct(Clock $clock)
{
$this->clock = $clock;
}
public function createSomething(): Something
{
return new Something($this->clock->now());
}
}
class Something
{
private $creationDate;
public function __construct(\DateTimeInterface $creationDate)
{
$this->creationDate = $creationDate;
}
public function creationDate(): \DateTimeInterface
{
return $this->creationDate;
}
}
namespace Your\Project;
use Stratadox\Clock\RewindableClock;
class Scheduler
{
private $clock;
public function __construct(RewindableClock $clock)
{
$this->clock = $clock;
}
public function scheduleForTheNextThreeHours(): Schedule
{
return new Schedule(
new Activity($this->clock->now()),
new Activity($this->clock->fastForward(new \DateInterval('PT1H'))->now()),
new Activity($this->clock->fastForward(new \DateInterval('PT2H'))->now())
);
}
public function whenDoIWantThisOnMyDesk(): \DateTimeInterface
{
return $this->clock->rewind(new \DateInterval('P1D'))->now();
}
}
use Stratadox\Clock\Clock;
use Stratadox\Clock\DateTimeClock;
$container->set(Clock::class, function () {
return DateTimeClock::create();
});
use Your\Project\SomeFactory;
use PHPUnit\Framework\TestCase;
use Stratadox\Clock\UnmovingClock;
class SomethingTest extends TestCase
{
public function testCreatingSomething(): void
{
$testTime = new DateTimeImmutable('1-1-1960');
$factory = new SomeFactory(
UnmovingClock::standingStillAt($testTime)
);
$something = $factory->createSomething();
$this->assertEquals($testTime, $something->creationDate());
}
}
use Stratadox\Clock\RewindableClock;
use Stratadox\Clock\RewindableDateTimeClock;
$container->set(RewindableClock::class, function () {
return RewindableDateTimeClock::create();
});
use Your\Project\Scheduler;
use PHPUnit\Framework\TestCase;
use Stratadox\Clock\RewindableDateTimeClock;
use Stratadox\Clock\UnmovingClock;
class SchedulerTest extends TestCase
{
public function testWhenItShouldBeOnTheirDesk(): void
{
$scheduler = new Scheduler(
RewindableDateTimeClock::using(UnmovingClock::standingStillAt(
new DateTimeImmutable('16-5-1991')
))
);
$this->assertEquals(
new DateTimeImmutable('15-5-1991'),
$scheduler->whenDoIWantThisOnMyDesk()
);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.