Chris@17
|
1 <?php
|
Chris@17
|
2 namespace TYPO3\PharStreamWrapper;
|
Chris@17
|
3
|
Chris@17
|
4 /*
|
Chris@17
|
5 * This file is part of the TYPO3 project.
|
Chris@17
|
6 *
|
Chris@17
|
7 * It is free software; you can redistribute it and/or modify it under the terms
|
Chris@17
|
8 * of the MIT License (MIT). For the full copyright and license information,
|
Chris@17
|
9 * please read the LICENSE file that was distributed with this source code.
|
Chris@17
|
10 *
|
Chris@17
|
11 * The TYPO3 project - inspiring people to share!
|
Chris@17
|
12 */
|
Chris@17
|
13
|
Chris@18
|
14 use TYPO3\PharStreamWrapper\Resolver\PharInvocation;
|
Chris@18
|
15 use TYPO3\PharStreamWrapper\Resolver\PharInvocationCollection;
|
Chris@18
|
16 use TYPO3\PharStreamWrapper\Resolver\PharInvocationResolver;
|
Chris@18
|
17
|
Chris@18
|
18 class Manager
|
Chris@17
|
19 {
|
Chris@17
|
20 /**
|
Chris@17
|
21 * @var self
|
Chris@17
|
22 */
|
Chris@17
|
23 private static $instance;
|
Chris@17
|
24
|
Chris@17
|
25 /**
|
Chris@17
|
26 * @var Behavior
|
Chris@17
|
27 */
|
Chris@17
|
28 private $behavior;
|
Chris@17
|
29
|
Chris@17
|
30 /**
|
Chris@18
|
31 * @var Resolvable
|
Chris@18
|
32 */
|
Chris@18
|
33 private $resolver;
|
Chris@18
|
34
|
Chris@18
|
35 /**
|
Chris@18
|
36 * @var Collectable
|
Chris@18
|
37 */
|
Chris@18
|
38 private $collection;
|
Chris@18
|
39
|
Chris@18
|
40 /**
|
Chris@17
|
41 * @param Behavior $behaviour
|
Chris@18
|
42 * @param Resolvable $resolver
|
Chris@18
|
43 * @param Collectable $collection
|
Chris@17
|
44 * @return self
|
Chris@17
|
45 */
|
Chris@18
|
46 public static function initialize(
|
Chris@18
|
47 Behavior $behaviour,
|
Chris@18
|
48 Resolvable $resolver = null,
|
Chris@18
|
49 Collectable $collection = null
|
Chris@18
|
50 ) {
|
Chris@17
|
51 if (self::$instance === null) {
|
Chris@18
|
52 self::$instance = new self($behaviour, $resolver, $collection);
|
Chris@17
|
53 return self::$instance;
|
Chris@17
|
54 }
|
Chris@17
|
55 throw new \LogicException(
|
Chris@17
|
56 'Manager can only be initialized once',
|
Chris@17
|
57 1535189871
|
Chris@17
|
58 );
|
Chris@17
|
59 }
|
Chris@17
|
60
|
Chris@17
|
61 /**
|
Chris@17
|
62 * @return self
|
Chris@17
|
63 */
|
Chris@17
|
64 public static function instance()
|
Chris@17
|
65 {
|
Chris@17
|
66 if (self::$instance !== null) {
|
Chris@17
|
67 return self::$instance;
|
Chris@17
|
68 }
|
Chris@17
|
69 throw new \LogicException(
|
Chris@17
|
70 'Manager needs to be initialized first',
|
Chris@17
|
71 1535189872
|
Chris@17
|
72 );
|
Chris@17
|
73 }
|
Chris@17
|
74
|
Chris@17
|
75 /**
|
Chris@17
|
76 * @return bool
|
Chris@17
|
77 */
|
Chris@17
|
78 public static function destroy()
|
Chris@17
|
79 {
|
Chris@17
|
80 if (self::$instance === null) {
|
Chris@17
|
81 return false;
|
Chris@17
|
82 }
|
Chris@17
|
83 self::$instance = null;
|
Chris@17
|
84 return true;
|
Chris@17
|
85 }
|
Chris@17
|
86
|
Chris@17
|
87 /**
|
Chris@17
|
88 * @param Behavior $behaviour
|
Chris@18
|
89 * @param Resolvable $resolver
|
Chris@18
|
90 * @param Collectable $collection
|
Chris@17
|
91 */
|
Chris@18
|
92 private function __construct(
|
Chris@18
|
93 Behavior $behaviour,
|
Chris@18
|
94 Resolvable $resolver = null,
|
Chris@18
|
95 Collectable $collection = null
|
Chris@18
|
96 ) {
|
Chris@18
|
97 if ($collection === null) {
|
Chris@18
|
98 $collection = new PharInvocationCollection();
|
Chris@18
|
99 }
|
Chris@18
|
100 if ($resolver === null) {
|
Chris@18
|
101 $resolver = new PharInvocationResolver();
|
Chris@18
|
102 }
|
Chris@18
|
103 $this->collection = $collection;
|
Chris@18
|
104 $this->resolver = $resolver;
|
Chris@17
|
105 $this->behavior = $behaviour;
|
Chris@17
|
106 }
|
Chris@17
|
107
|
Chris@17
|
108 /**
|
Chris@17
|
109 * @param string $path
|
Chris@17
|
110 * @param string $command
|
Chris@17
|
111 * @return bool
|
Chris@17
|
112 */
|
Chris@17
|
113 public function assert($path, $command)
|
Chris@17
|
114 {
|
Chris@17
|
115 return $this->behavior->assert($path, $command);
|
Chris@17
|
116 }
|
Chris@18
|
117
|
Chris@18
|
118 /**
|
Chris@18
|
119 * @param string $path
|
Chris@18
|
120 * @param null|int $flags
|
Chris@18
|
121 * @return null|PharInvocation
|
Chris@18
|
122 */
|
Chris@18
|
123 public function resolve($path, $flags = null)
|
Chris@18
|
124 {
|
Chris@18
|
125 return $this->resolver->resolve($path, $flags);
|
Chris@18
|
126 }
|
Chris@18
|
127
|
Chris@18
|
128 /**
|
Chris@18
|
129 * @return Collectable
|
Chris@18
|
130 */
|
Chris@18
|
131 public function getCollection()
|
Chris@18
|
132 {
|
Chris@18
|
133 return $this->collection;
|
Chris@18
|
134 }
|
Chris@17
|
135 }
|