Maslosoft Embedi API
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
<?php
/**
* This software package is licensed under `AGPL, Commercial` license[s].
*
* @package maslosoft/embedi
* @license AGPL, Commercial
*
* @copyright Copyright (c) Peter Maselkowski <pmaselkowski@gmail.com>
*
*/
namespace Maslosoft\EmbeDi\Traits;
use Exception;
trait FlyTrait
{
private static $instances = [];
/**
* Get flyweight instance of component
* @param string $instanceId
* @return static
* @throws Exception
*/
public static function fly($instanceId = null)
{
if (null === $instanceId)
{
if (!defined(sprintf('%s::%s', static::class, 'DefaultInstanceId')))
{
throw new Exception(sprintf('Class `%s` must define constant `%s` (%1$s::%2$s)', static::class, 'DefaultInstanceId'));
}
$instanceId = static::DefaultInstanceId;
}
if (!isset(self::$instances[static::class][$instanceId]))
{
self::$instances[static::class][$instanceId] = new static($instanceId);
}
return self::$instances[static::class][$instanceId];
}
}
API documentation generated by ApiGen