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
 | 
