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 git.master, git.master_jit, rfc.property-hooks

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
48.45 ms | 401 KiB | 8 Q