コード例 #1
0
 public function testServiceAliasDefinition()
 {
     $definition = new ServiceDefinition('service_name', ['service' => __CLASS__]);
     assertTrue($definition->isAlias());
     assertFalse($definition->isFactory());
     assertSame(__CLASS__, $definition->getClass());
 }
コード例 #2
0
 /**
  * @param ServiceDefinition $definition
  *
  * @return \Closure
  */
 private function createFactoryFactory(ServiceDefinition $definition)
 {
     return function () use($definition) {
         $className = $definition->getClass();
         $factory = new $className();
         return $factory(...$this->resolveArguments($definition->getArguments()));
     };
 }
コード例 #3
0
 /**
  * @param ServiceDefinition $definition
  *
  * @return Closure
  */
 private function createInstanceFactory(ServiceDefinition $definition)
 {
     return function () use($definition) {
         $className = $definition->getClass();
         $instance = new $className(...$this->resolveArguments($definition->getArguments()));
         foreach ($definition->getMethods() as $name => $args) {
             $instance->{$name}(...$this->resolveArguments($args));
         }
         return $instance;
     };
 }