コード例 #1
0
ファイル: Resolver.php プロジェクト: weew/container
 /**
  * @param ClassDefinition $definition
  * @param array $args
  *
  * @return mixed
  * @throws TypeMismatchException
  */
 public function getClass(ClassDefinition $definition, array $args = [])
 {
     $abstract = $definition->getValue();
     $class = $definition->getId();
     if (is_callable($abstract)) {
         $instance = $this->container->call($abstract, $args);
     } else {
         if (is_object($abstract)) {
             $instance = $abstract;
         } else {
             if ($abstract === null) {
                 $abstract = $class;
             }
             $instance = $this->reflector->resolveClass($this->container, $abstract, $args);
         }
     }
     $this->matchClassType($class, $instance);
     return $instance;
 }
コード例 #2
0
ファイル: Container.php プロジェクト: weew/container
 /**
  * @param $class
  * @param $method
  * @param array $args
  *
  * @return mixed
  */
 public function callStaticMethod($class, $method, array $args = [])
 {
     return $this->rethrowExceptions(function () use($class, $method, $args) {
         return $this->reflector->resolveMethod($this, $class, $method, $args);
     });
 }