62 lines
1.5 KiB
Markdown
62 lines
1.5 KiB
Markdown
|
# PSR Clock
|
||
|
|
||
|
This repository holds the interface for [PSR-20][psr-url].
|
||
|
|
||
|
Note that this is not a clock of its own. It is merely an interface that
|
||
|
describes a clock. See the specification for more details.
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
```bash
|
||
|
composer require psr/clock
|
||
|
```
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
If you need a clock, you can use the interface like this:
|
||
|
|
||
|
```php
|
||
|
<?php
|
||
|
|
||
|
use Psr\Clock\ClockInterface;
|
||
|
|
||
|
class Foo
|
||
|
{
|
||
|
private ClockInterface $clock;
|
||
|
|
||
|
public function __construct(ClockInterface $clock)
|
||
|
{
|
||
|
$this->clock = $clock;
|
||
|
}
|
||
|
|
||
|
public function doSomething()
|
||
|
{
|
||
|
/** @var DateTimeImmutable $currentDateAndTime */
|
||
|
$currentDateAndTime = $this->clock->now();
|
||
|
// do something useful with that information
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
You can then pick one of the [implementations][implementation-url] of the interface to get a clock.
|
||
|
|
||
|
If you want to implement the interface, you can require this package and
|
||
|
implement `Psr\Clock\ClockInterface` in your code.
|
||
|
|
||
|
Don't forget to add `psr/clock-implementation` to your `composer.json`s `provides`-section like this:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"provides": {
|
||
|
"psr/clock-implementation": "1.0"
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
And please read the [specification text][specification-url] for details on the interface.
|
||
|
|
||
|
[psr-url]: https://www.php-fig.org/psr/psr-20
|
||
|
[package-url]: https://packagist.org/packages/psr/clock
|
||
|
[implementation-url]: https://packagist.org/providers/psr/clock-implementation
|
||
|
[specification-url]: https://github.com/php-fig/fig-standards/blob/master/proposed/clock.md
|