public function generateParameter(Parameter $parameter, CodeWriter $writer) { $name = $parameter->isAnnotatedWith("Spot\\App\\Web\\Param") ? $parameter->getAnnotation("Spot\\App\\Web\\Param")->value : $parameter->name; if ($parameter->isDefaultValueAvailable()) { $writer->write("isset("); $this->generateBindedParameter($name, $writer); $writer->write(") ? "); } $class = $parameter->getClass(); if ($class) { if ($class->name == "Spot\\App\\Web\\Request") { $writer->write('$rq'); } else { if ($class->name == "Spot\\App\\Web\\Response") { $writer->write('$rp'); } else { $writer->write('is_array('); $this->generateBindedParameter($name, $writer); $writer->write(') ? $d->newInstance('); $writer->literal($class->name); $writer->write(', '); $this->generateBindedParameter($name, $writer); $writer->write(') : $d->find('); $writer->literal($class->name); $writer->write(', '); $this->generateBindedParameter($name, $writer); $writer->write(')'); } } } else { $this->generateBindedParameter($name, $writer); } if ($parameter->isDefaultValueAvailable()) { $writer->write(" : "); $parameter->isDefaultValueConstant() ? $writer->write($parameter->getDefaultValueConstantName()) : $writer->literal($parameter->getDefaultValue()); } }