aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/psr/clock/README.md
blob: 6ca877eeb11dbc468936b39d79faa8665e1fd576 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 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