Пример #1
0
 /**
  * Returns the dependencies of the specified class.
  *
  * @param string $class class name, interface name or alias name
  * @return array the dependencies of the specified class.
  */
 protected function getDependencies($class)
 {
     if (isset($this->_reflections[$class])) {
         return [$this->_reflections[$class], $this->_dependencies[$class]];
     }
     $dependencies = [];
     $reflection = new ReflectionClass($class);
     $constructor = $reflection->getConstructor();
     if ($constructor !== null) {
         foreach ($constructor->getParameters() as $param) {
             if ($param->isDefaultValueAvailable()) {
                 $dependencies[] = $param->getDefaultValue();
             } else {
                 $c = $param->getClass();
                 $dependencies[] = Instance::of($c === null ? null : $c->getName());
             }
         }
     }
     $this->_reflections[$class] = $reflection;
     $this->_dependencies[$class] = $dependencies;
     return [$reflection, $dependencies];
 }