<?php
namespace Test;
class Element {
}
class Hello {
}
class Super extends Hello {
public function test() {
var_dump($this->getOptions(new Element));
}
protected function getOptions(Element $element) : array {
return null;
}
}
class Child extends Super {
protected function getOptions(Element $element) : array {
return ["ok", "Test"];
}
}
$super = new Super();
$super->test();
$child = new Child();
$child->test();
Fatal error: Uncaught TypeError: Test\Super::getOptions(): Return value must be of type array, null returned in /in/eQqqZ:19
Stack trace:
#0 /in/eQqqZ(15): Test\Super->getOptions(Object(Test\Element))
#1 /in/eQqqZ(32): Test\Super->test()
#2 {main}
thrown in /in/eQqqZ on line 19
Process exited with code 255.
Fatal error: Uncaught TypeError: Return value of Test\Super::getOptions() must be of the type array, null returned in /in/eQqqZ:19
Stack trace:
#0 /in/eQqqZ(15): Test\Super->getOptions(Object(Test\Element))
#1 /in/eQqqZ(32): Test\Super->test()
#2 {main}
thrown in /in/eQqqZ on line 19
Process exited with code 255.
Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28
Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/eQqqZ on line 18
Process exited with code 255.