ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
Duration.php
Go to the documentation of this file.
1 <?php
2 
18 namespace ILIAS\HTTP\Duration;
19 
21 
25 abstract class Duration
26 {
30  protected const S_TO_US = 1_000_000;
31 
35  protected const MS_TO_US = 1_000;
36 
37  protected ?IncrementStrategy $increment = null;
38  protected int $duration_in_ms;
39 
40  public function __construct(int $duration_in_ms)
41  {
42  $this->duration_in_ms = $duration_in_ms;
43  }
44 
45  public function withIncrement(IncrementStrategy $increment) : self
46  {
47  $clone = clone $this;
48  $clone->increment = $increment;
49 
50  return $clone;
51  }
52 
53  public function increment() : self
54  {
55  if (null === $this->increment) {
56  return $this;
57  }
58 
59  $clone = clone $this;
60  $clone->duration_in_ms = $clone->increment->increment($clone->duration_in_ms);
61 
62  return $clone;
63  }
64 
65  public function withDuration(int $duration_in_ms) : self
66  {
67  $clone = clone $this;
68  $clone->duration_in_ms = $duration_in_ms;
69 
70  return $clone;
71  }
72 
73  public function getDuration() : int
74  {
75  return $this->duration_in_ms;
76  }
77 }
withIncrement(IncrementStrategy $increment)
Definition: Duration.php:45
IncrementStrategy $increment
Definition: Duration.php:37
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const S_TO_US
number used for converting seconds (s) into microseconds (us/µ) or vise-versa.
Definition: Duration.php:30
const MS_TO_US
number used for converting miliseconds (ms) into microseconds (us/µ) or vise-versa.
Definition: Duration.php:35
__construct(int $duration_in_ms)
Definition: Duration.php:40
withDuration(int $duration_in_ms)
Definition: Duration.php:65