Seditio Source
Root |
./othercms/drupal-7.90/misc/typo3/phar-stream-wrapper/src/Manager.php
<?php
namespace TYPO3\PharStreamWrapper;

/*
 * This file is part of the TYPO3 project.
 *
 * It is free software; you can redistribute it and/or modify it under the terms
 * of the MIT License (MIT). For the full copyright and license information,
 * please read the LICENSE file that was distributed with this source code.
 *
 * The TYPO3 project - inspiring people to share!
 */

use TYPO3\PharStreamWrapper\Resolver\PharInvocation;
use
TYPO3\PharStreamWrapper\Resolver\PharInvocationCollection;
use
TYPO3\PharStreamWrapper\Resolver\PharInvocationResolver;

class
Manager
{
   
/**
     * @var self
     */
   
private static $instance;

   
/**
     * @var Behavior
     */
   
private $behavior;

   
/**
     * @var Resolvable
     */
   
private $resolver;

   
/**
     * @var Collectable
     */
   
private $collection;

   
/**
     * @param Behavior $behaviour
     * @param Resolvable $resolver
     * @param Collectable $collection
     * @return self
     */
   
public static function initialize(
       
Behavior $behaviour,
       
Resolvable $resolver = null,
       
Collectable $collection = null
   
) {
        if (
self::$instance === null) {
           
self::$instance = new self($behaviour, $resolver, $collection);
            return
self::$instance;
        }
        throw new \
LogicException(
           
'Manager can only be initialized once',
           
1535189871
       
);
    }

   
/**
     * @return self
     */
   
public static function instance()
    {
        if (
self::$instance !== null) {
            return
self::$instance;
        }
        throw new \
LogicException(
           
'Manager needs to be initialized first',
           
1535189872
       
);
    }

   
/**
     * @return bool
     */
   
public static function destroy()
    {
        if (
self::$instance === null) {
            return
false;
        }
       
self::$instance = null;
        return
true;
    }

   
/**
     * @param Behavior $behaviour
     * @param Resolvable $resolver
     * @param Collectable $collection
     */
   
private function __construct(
       
Behavior $behaviour,
       
Resolvable $resolver = null,
       
Collectable $collection = null
   
) {
        if (
$collection === null) {
           
$collection = new PharInvocationCollection();
        }
        if (
$resolver === null) {
           
$resolver = new PharInvocationResolver();
        }
       
$this->collection = $collection;
       
$this->resolver = $resolver;
       
$this->behavior = $behaviour;
    }

   
/**
     * @param string $path
     * @param string $command
     * @return bool
     */
   
public function assert($path, $command)
    {
        return
$this->behavior->assert($path, $command);
    }

   
/**
     * @param string $path
     * @param null|int $flags
     * @return null|PharInvocation
     */
   
public function resolve($path, $flags = null)
    {
        return
$this->resolver->resolve($path, $flags);
    }

   
/**
     * @return Collectable
     */
   
public function getCollection()
    {
        return
$this->collection;
    }
}