Ejemplo n.º 1
0
 public function testParameters()
 {
     $method = new PhpMethod('needsName');
     $this->assertEquals([], $method->getParameters());
     $this->assertSame($method, $method->setParameters($params = [new PhpParameter('a')]));
     $this->assertSame($params, $method->getParameters());
     $this->assertSame($method, $method->addParameter($param = new PhpParameter('b')));
     $this->assertSame($param, $method->getParameter('b'));
     $this->assertSame($param, $method->getParameter(1));
     $params[] = $param;
     $this->assertSame($params, $method->getParameters());
     $this->assertSame($method, $method->removeParameter(0));
     $this->assertEquals('b', $method->getParameter(0)->getName());
     unset($params[0]);
     $this->assertEquals([$param], $method->getParameters());
     $this->assertSame($method, $method->addParameter($param = new PhpParameter('c')));
     $params[] = $param;
     $params = array_values($params);
     $this->assertSame($params, $method->getParameters());
     $this->assertSame($method, $method->replaceParameter(0, $param = new PhpParameter('a')));
     $params[0] = $param;
     $this->assertSame($params, $method->getParameters());
     $method->removeParameter($param);
     $method->removeParameter('c');
     $this->assertEquals([], $method->getParameters());
 }
Ejemplo n.º 2
0
 public function visitMethod(PhpMethod $method)
 {
     $this->visitDocblock($method->getDocblock());
     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(")");
     $this->writeFunctionReturnType($method->getType());
     if ($method->isAbstract() || $method->getParent() instanceof PhpInterface) {
         $this->writer->write(";\n\n");
         return;
     }
     $this->writer->writeln(' {')->indent()->writeln(trim($method->getBody()))->outdent()->rtrim()->write("}\n\n");
 }