예제 #1
0
 /**
  * @param string $name
  * @return \Symforce\AdminBundle\Compiler\Generator\PhpMethod
  */
 public function addMethod($name)
 {
     $method = new PhpMethod($name);
     $method->setFinal(true)->setVisibility('protected');
     $this->setMethod($method);
     return $method;
 }
예제 #2
0
 /** @return PhpMethod */
 public function addMethod($name)
 {
     $method = new PhpMethod();
     if ($this->type === 'interface') {
         $method->setVisibility('')->setBody(FALSE);
     } else {
         $method->setVisibility('public');
     }
     return $this->methods[$name] = $method->setName($name);
 }
예제 #3
0
    /**
     * setMethod()
     *
     * @param array|\Zend\CodeGenerator\Php\PhpMethod $method
     * @return \Zend\CodeGenerator\Php\PhpClass
     */
    public function setMethod($method)
    {
        if (is_array($method)) {
            $method = new PhpMethod($method);
            $methodName = $method->getName();
        } elseif ($method instanceof PhpMethod) {
            $methodName = $method->getName();
        } else {
            throw new Exception\InvalidArgumentException('setMethod() expects either an array of method options or an instance of Zend\CodeGenerator\Php\Method');
        }

        if (isset($this->_methods[$methodName])) {
            throw new Exception\InvalidArgumentException('A method by name ' . $methodName . ' already exists in this class.');
        }

        $this->_methods[$methodName] = $method;
        return $this;
    }
예제 #4
0
 public function visitMethod(PhpMethod $method)
 {
     if ($docblock = $method->getDocblock()) {
         $this->writer->writeln($docblock)->rtrim();
     }
     if ($method->isAbstract()) {
         $this->writer->write('abstract ');
     }
     $this->writer->write($method->getVisibility() . ' ');
     if ($method->isStatic()) {
         $this->writer->write('static ');
     }
     $this->writer->write('function ' . $method->getName() . '(');
     $this->writeParameters($method->getParameters());
     if ($method->isAbstract()) {
         $this->writer->write(");\n\n");
         return;
     }
     $this->writer->writeln(")")->writeln('{')->indent()->writeln($method->getBody())->outdent()->rtrim()->write("}\n\n");
 }
예제 #5
0
 public function visitMethod(PhpMethod $method)
 {
     if ($docblock = $method->getDocblock()) {
         $this->writer->writeln($docblock)->rtrim();
     }
     if ($method->isAbstract()) {
         $this->writer->write('abstract ');
     }
     $this->writer->write($method->getVisibility() . ' ');
     if ($method->isStatic()) {
         $this->writer->write('static ');
     }
     $this->writer->write('function ');
     if ($method->isReferenceReturned()) {
         $this->writer->write('& ');
     }
     $this->writer->write($method->getName() . '(');
     $this->writeParameters($method->getParameters());
     $this->writer->write(")");
     if ($method->hasReturnType()) {
         $type = $method->getReturnType();
         $this->writer->write(': ');
         if (!$method->hasBuiltInReturnType() && '\\' !== $type[0]) {
             $this->writer->write('\\');
         }
         $this->writer->write($type);
     }
     if ($method->isAbstract() || $this->isInterface) {
         $this->writer->write(";\n\n");
         return;
     }
     $this->writer->writeln("\n{")->indent()->writeln($method->getBody())->outdent()->rtrim()->write("}\n\n");
 }