<?php
interface Test
{
public function check(Test $x);
}
interface TestTest extends Test
{
public function check(TestTest $x);
};
//this is ok:
class Foo implements Test
{
public function check(Test $x) {}
}
//this is fail, but why? Bar implements Test, so.. logically it fulfills contract..
class Bar implements TestTest
{
public function check(TestTest $x) {}
}
Fatal error: Declaration of TestTest::check(TestTest $x) must be compatible with Test::check(Test $x) in /in/WFu91 on line 10
Process exited with code 255.
Fatal error: Declaration of TestTest::check(TestTest $x) must be compatible with Test::check(Test $x) in /in/WFu91 on line 8
Process exited with code 255.
Fatal error: Declaration of TestTest::check() must be compatible with Test::check(Test $x) in /in/WFu91 on line 9
Process exited with code 255.
Output for 5.3.9 - 5.3.29
Fatal error: Declaration of TestTest::check() must be compatible with that of Test::check() in /in/WFu91 on line 9
Process exited with code 255.
Output for 5.3.0 - 5.3.8
Fatal error: Can't inherit abstract function Test::check() (previously declared abstract in TestTest) in /in/WFu91 on line 9
Process exited with code 255.
Fatal error: Can't inherit abstract function Test::check() (previously declared abstract in TestTest) in /in/WFu91 on line 8
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING in /in/WFu91 on line 3
Process exited with code 255.