3v4l.org

run code in 300+ PHP versions simultaneously
<?php // cet exemple est issue de la documentation https://www.php.net/manual/fr/language.oop5.variance.php declare(strict_types=1); class Food {} // la classe AnimalFood hérite de Food class AnimalFood extends Food {} abstract class Animal { protected string $name; public function __construct(string $name) { $this->name = $name; } // Initialement un animal mange de la nouriture animale. public function eat(AnimalFood $food) { echo $this->name . " eats " . get_class($food); } } class Dog extends Animal { // Puisque la nouriture animale est avant tout de la nouriture, alors il est possible d'élargir le choix // en précisant juste nouriture. C'est toujours valide :) Le chien ne s'en plaindra pas. // Par contre un poisson... ne mangera probablement pas une côte de boeuf... // Il faut pouvoir conserver le comportement original, et garantir la nouriture appropriée. // Ceci s'appelle la contravariance. public function eat(Food $food) { echo $this->name . " eats " . get_class($food); } }
Output for 7.4.0 - 7.4.26, 8.0.0 - 8.0.13, 8.1rc1 - rc3
Output for 7.3.0 - 7.3.33
Parse error: syntax error, unexpected 'string' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /in/Hc1tm on line 14
Process exited with code 255.
Output for 4.3.0 - 4.3.5
Parse error: parse error, unexpected T_CLASS in /in/Hc1tm on line 12
Process exited with code 255.

preferences:
36.89 ms | 461 KiB | 5 Q