<?php
class Shirt
{
public function test()
{
return "Shirt";
}
}
class Sweater extends Shirt
{
public function test()
{
return "Sweater";
}
public function doSweaterStuff()
{
echo "This is a sweater!";
}
}
$shirt = new Shirt();
output_shirt($shirt);
function output_shirt(Sweater $sweater) {
$sweater->doSweaterStuff();
echo $sweater->test();
}
Fatal error: Uncaught TypeError: output_shirt(): Argument #1 ($sweater) must be of type Sweater, Shirt given, called in /in/u7gXP on line 29 and defined in /in/u7gXP:31
Stack trace:
#0 /in/u7gXP(29): output_shirt(Object(Shirt))
#1 {main}
thrown in /in/u7gXP on line 31
Process exited with code 255.
Fatal error: Uncaught TypeError: Argument 1 passed to output_shirt() must be an instance of Sweater, instance of Shirt given, called in /in/u7gXP on line 29 and defined in /in/u7gXP:31
Stack trace:
#0 /in/u7gXP(29): output_shirt(Object(Shirt))
#1 {main}
thrown in /in/u7gXP on line 31
Process exited with code 255.
Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28
Catchable fatal error: Argument 1 passed to output_shirt() must be an instance of Sweater, instance of Shirt given, called in /in/u7gXP on line 29 and defined in /in/u7gXP on line 31
Process exited with code 255.