public function generateDependency(Parameter $parameter, CodeWriter $writer)
 {
     $q = $parameter->getAnnotation("Spot\\Inject\\Qualifier");
     if ($q) {
         $writer->write("/** @", get_class($q));
         $writer->write("(");
         $vars = get_object_vars($q);
         if ($vars) {
             $name = key($vars);
             $value = array_shift($vars);
             $writer->write($name, '=');
             $writer->literal($value);
             foreach ($vars as $name => $value) {
                 $writer->write(', ', $name, ' = ');
                 $writer->literal($value);
             }
         }
         $writer->write(") */");
     }
     $class = $parameter->getClass();
     if ($class) {
         $writer->write($class->name, " ");
     } else {
         if ($parameter->isArray()) {
             $writer->write("array ");
         }
     }
     $writer->write('$_', $parameter->getPosition());
 }
示例#2
0
 public static function ofParameter(Parameter $parameter)
 {
     $qualifier = $parameter->getAnnotation("Spot\\Inject\\Qualifier");
     if ($class = $parameter->getClass()) {
         return Key::ofType($class->name, $qualifier);
     }
     if (!$qualifier) {
         throw new ConfigurationException("Parameter \${$parameter->name} in " . $parameter->getDeclaringClass()->name . "::" . $parameter->getDeclaringFunction()->name . " is unbindable " . "because it's not type-hinted nor annotated with Qualifier annotation");
     }
     if ($parameter->isArray()) {
         return Key::ofCollection($qualifier);
     }
     return Key::ofConstant($qualifier);
 }
示例#3
0
 public function generateParameter(Parameter $parameter, CodeWriter $writer)
 {
     $class = $parameter->getClass();
     if ($class) {
         $writer->write("\\", $class->name, " ");
     } else {
         if ($parameter->isArray()) {
             $writer->write("array ");
         } else {
             if ($parameter->isCallable()) {
                 $writer->write("callable ");
             }
         }
     }
     $writer->write("\$", $parameter->name);
 }
示例#4
0
 public function generateParameter(Parameter $parameter, CodeWriter $writer)
 {
     if ($parameter->getClass()) {
         $writer->write($parameter->getClass()->name, " ");
     } else {
         if ($parameter->isArray()) {
             $writer->write("array ");
         }
     }
     $writer->write('$', $parameter->name);
     if ($parameter->isDefaultValueAvailable()) {
         $writer->write(" = ");
         $writer->literal($parameter->getDefaultValue());
     }
 }