first commit
This commit is contained in:
18
vendor/php-flasher/flasher/Container/ContainerInterface.php
vendored
Normal file
18
vendor/php-flasher/flasher/Container/ContainerInterface.php
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\Container;
|
||||
|
||||
interface ContainerInterface
|
||||
{
|
||||
/**
|
||||
* @param string $id
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function get($id);
|
||||
}
|
57
vendor/php-flasher/flasher/Container/FlasherContainer.php
vendored
Normal file
57
vendor/php-flasher/flasher/Container/FlasherContainer.php
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\Container;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class FlasherContainer
|
||||
{
|
||||
/**
|
||||
* @var self|null
|
||||
*/
|
||||
private static $instance = null;
|
||||
|
||||
/**
|
||||
* @var ContainerInterface
|
||||
*/
|
||||
private static $container;
|
||||
|
||||
private function __construct(ContainerInterface $container)
|
||||
{
|
||||
self::$container = $container;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $id
|
||||
*
|
||||
* @return mixed
|
||||
*
|
||||
* @throws \LogicException
|
||||
*/
|
||||
public static function create($id)
|
||||
{
|
||||
if (null === self::$instance) {
|
||||
throw new \LogicException('Container is not initialized yet. Container::init() must be called with a real container.');
|
||||
}
|
||||
|
||||
return self::$container->get($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public static function init(ContainerInterface $container)
|
||||
{
|
||||
if (null !== self::$instance) {
|
||||
return;
|
||||
}
|
||||
|
||||
self::$instance = new self($container);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user