ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
LazyProvide.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\LegalDocuments;
22
23use Closure;
29
30class LazyProvide extends Provide
31{
33 private Closure $provide;
34
38 public function __construct(Closure $create)
39 {
40 $this->provide = function () use ($create) {
41 $provide = $create();
42 $this->provide = fn() => $provide;
43 return $provide;
44 };
45 }
46
47 public function withdrawal(): ProvideWithdrawal
48 {
49 return ($this->provide)()->withdrawal();
50 }
51
52 public function publicPage(): ProvidePublicPage
53 {
54 return ($this->provide)()->publicPage();
55 }
56
57 public function document(): ProvideDocument
58 {
59 return ($this->provide)()->document();
60 }
61
62 public function history(): ProvideHistory
63 {
64 return ($this->provide)()->history();
65 }
66
67 public function allowEditing(): Provide
68 {
69 return ($this->provide)()->allowEditing();
70 }
71
72 public function publicApi(): ?PublicApi
73 {
74 return ($this->provide)()->publicApi();
75 }
76
77 public function id(): string
78 {
79 return ($this->provide)()->id();
80 }
81}