<slide>
<title>Covariant Return Types</title>

Covariant Returns and Contravariant Parameters — Levi Morrison
https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters —

typed properties are invariant

<example>
&lt;?php
class 🍞bread {}
class 🥖baguette extends 🍞bread {}

class Bakery
{
	public function gimme(): 🥖baguette {}
}

class Patisserie extends Bakery
{
	public function gimme(): 🍞bread {}
}
?>
</example>

<blurb class="error">Fatal error: Declaration of Patisserie::gimme(): 🍞bread must be compatible with Bakery::gimme(): 🥖baguette</blurb>
<break lines="2"/>
<blurb class="center">Return types are *co-variant*:<br/><br/>~they can *not* return a wider type~</blurb>
</slide>

