1010
1111final class LocatorBuilder implements LocatorBuilderInterface
1212{
13- private $ locator ;
13+ private ? LocatorInterface $ locator = null ;
1414
15- private $ referenceFactory ;
16-
17- private $ references = [];
15+ /**
16+ * @var list<ReferenceInterface>
17+ */
18+ private array $ references = [];
1819
1920 public static function create (): LocatorBuilderInterface
2021 {
2122 return new self (new ReferenceFactory ());
2223 }
2324
24- public function __construct (ReferenceFactoryInterface $ referenceFactory )
25- {
26- $ this -> referenceFactory = $ referenceFactory ;
25+ public function __construct (
26+ private ReferenceFactoryInterface $ referenceFactory ,
27+ ) {
2728 }
2829
2930 public function addReference (string $ text ): void
@@ -40,11 +41,7 @@ public function addReference(string $text): void
4041
4142 public function getLocator (): LocatorInterface
4243 {
43- if (!isset ($ this ->locator )) {
44- $ this ->locator = new Locator (...$ this ->references );
45- }
46-
47- return $ this ->locator ;
44+ return $ this ->locator ??= new Locator (...$ this ->references );
4845 }
4946
5047 public function export (): string
@@ -53,11 +50,9 @@ public function export(): string
5350 ->getLocator ()
5451 ->references ();
5552
56- if (empty ($ references )) {
57- return '' ;
58- }
59-
60- return '/ ' . implode ('/ ' , array_map ([$ this , 'escapeReference ' ], $ references ));
53+ return empty ($ references )
54+ ? ''
55+ : '/ ' . implode ('/ ' , array_map ([$ this , 'escapeReference ' ], $ references ));
6156 }
6257
6358 private function escapeReference (ListedReferenceInterface $ reference ): string
0 commit comments