vendor/codeages/biz-framework/src/Context/ContainerAutoloader.php line 56

Open in your IDE?
  1. <?php
  2. namespace Codeages\Biz\Framework\Context;
  3. use Pimple\Container;
  4. class ContainerAutoloader
  5. {
  6.     protected $container;
  7.     protected $aliases;
  8.     protected $makers;
  9.     public function __construct(Container $container, \ArrayObject $aliases, array $makers)
  10.     {
  11.         $this->container $container;
  12.         $this->aliases $aliases;
  13.         $this->makers $makers;
  14.     }
  15.     public function autoload($makerName$alias)
  16.     {
  17.         $parts explode(':'$alias);
  18.         if (empty($parts)) {
  19.             throw new \InvalidArgumentException('Service alias parameter is invalid.');
  20.         }
  21.         if (isset($this->container["@{$alias}"])) {
  22.             return $this->container["@{$alias}"];
  23.         }
  24.         if (=== count($parts)) {
  25.             $prefix '';
  26.             $middle = array();
  27.             $name $parts[0];
  28.         } else {
  29.             $prefix $parts[0];
  30.             $middle array_slice($parts1, -1);
  31.             $name end($parts);
  32.         }
  33.         if (!isset($this->aliases[$prefix])) {
  34.             $middle array_merge(array($prefix), $middle);
  35.             $prefix '';
  36.         }
  37.         $namespace rtrim($this->aliases[$prefix], '\\');
  38.         $middle implode('\\'$middle);
  39.         if ($middle) {
  40.             $namespace .= '\\'.$middle;
  41.         }
  42.         $maker $this->makers[$makerName];
  43.         $obj $maker($namespace$name);
  44.         $this->container["@{$alias}"] = $obj;
  45.         return $obj;
  46.     }
  47. }