annotate vendor/typo3/phar-stream-wrapper/src/Manager.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
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 }