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()); }
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"); }