<?php
interface Type
{}
class SomeType implements Type
{}
class SomeOtherType implements Type
{}
abstract class TypeUser
{
public function __construct(Type $type) {}
public function test(Type $type) {}
}
class SomeTypeUser extends TypeUser
{
public function __construct(SomeType $type) {}
public function test(SomeType $type) {}
}
class SomeOtherTypeUser extends TypeUser
{
public function __construct(SomeOtherType $type) {}
}
$type = new SomeType();
$obj = (new SomeTypeUser($type))->test($type);
Fatal error: Declaration of SomeTypeUser::test(SomeType $type) must be compatible with TypeUser::test(Type $type) in /in/8Q61G on line 20
Process exited with code 255.
Output for 7.4.0 - 7.4.33
Warning: Declaration of SomeTypeUser::test(SomeType $type) should be compatible with TypeUser::test(Type $type) in /in/8Q61G on line 20
Strict Standards: Declaration of SomeTypeUser::test() should be compatible with that of TypeUser::test() in /in/8Q61G on line 21
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /in/8Q61G on line 29
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Strict Standards: Declaration of SomeTypeUser::test() should be compatible with that of TypeUser::test() in /in/8Q61G on line 21
Parse error: parse error, unexpected T_OBJECT_OPERATOR in /in/8Q61G on line 29
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING in /in/8Q61G on line 2
Process exited with code 255.