public function getParameters() : array
{
if ($this->parameters === null) {
$this->parameters = array_map(function (\ReflectionParameter $reflection) {
return new PhpParameterReflection($reflection, isset($this->phpDocParameterTypes[$reflection->getName()]) ? $this->phpDocParameterTypes[$reflection->getName()] : null);
}, $this->reflection->getParameters());
if ($this->reflection->getName() === '__construct' && $this->declaringClass->getName() === 'ArrayObject' && count($this->parameters) === 1) {
// PHP bug #71077
$this->parameters[] = new DummyOptionalParameter('flags', new IntegerType(false));
$this->parameters[] = new DummyOptionalParameter('iterator_class', new StringType(false));
}
if ($this->declaringClass->getName() === 'ReflectionMethod' && $this->reflection->getName() === 'invoke' && !$this->parameters[1]->isOptional()) {
// PHP bug #71416
$this->parameters[1] = new DummyOptionalParameter('parameter', new MixedType(true));
}
}
return $this->parameters;
}