3v4l.org

run code in 200+ PHP versions simultaneously
<?php interface Employee {} class SteelFactoryEmployee implements Employee {} class CarsFactoryEmployee implements Employee {} interface Factory { public function hire(Employee $employee): bool; } class SteelFactory implements Factory { public function hire(SteelFactoryEmployee $employee): bool { return true; } } class CarsFactory implements Factory { public function hire(CarsFactoryEmployee $employee): bool { return true; } } class EmploymentDepartment { public function hireNewEmployee(Factory $factory, Employee $employee): void { $factory->hire($employee); } } $someNewEmployee = new SteelFactoryEmployee(); $someFactory = new SteelFactory(); $employmentDepartment = new EmploymentDepartment(); $employmentDepartment->hireNewEmployee($someFactory, $someNewEmployee);
based on RtM7Z

Shows result from various feature-branches currently under review from the php developers. Contact me to have additional branches featured.

Output for branch php-master
Fatal error: Declaration of SteelFactory::hire(SteelFactoryEmployee $employee): bool must be compatible with Factory::hire(Employee $employee): bool in /in/pT2Cb on line 15
Process exited with code 255.
Output for branch php-master+opcache
Fatal error: Declaration of SteelFactory::hire(SteelFactoryEmployee $employee): bool must be compatible with Factory::hire(Employee $employee): bool in /in/pT2Cb on line 15
Process exited with code 255.
Output for branch php-master+jit
Fatal error: Declaration of SteelFactory::hire(SteelFactoryEmployee $employee): bool must be compatible with Factory::hire(Employee $employee): bool in /in/pT2Cb on line 15
Process exited with code 255.
Output for Typed properties v2
Fatal error: Declaration of SteelFactory::hire(SteelFactoryEmployee $employee): bool must be compatible with Factory::hire(Employee $employee): bool in /in/pT2Cb on line 13
Process exited with code 255.
Output for Arrow functions
Fatal error: Declaration of SteelFactory::hire(SteelFactoryEmployee $employee): bool must be compatible with Factory::hire(Employee $employee): bool in /in/pT2Cb on line 13
Process exited with code 255.
Output for Object typehint
Fatal error: Declaration of SteelFactory::hire(SteelFactoryEmployee $employee): bool must be compatible with Factory::hire(Employee $employee): bool in /in/pT2Cb on line 13
Process exited with code 255.
Output for Array change keys
Fatal error: Declaration of SteelFactory::hire(SteelFactoryEmployee $employee): bool must be compatible with Factory::hire(Employee $employee): bool in /in/pT2Cb on line 13
Process exited with code 255.
Output for Lexical anon
Fatal error: Declaration of SteelFactory::hire() must be compatible with Factory::hire(Employee $employee): bool in /in/pT2Cb on line 13
Process exited with code 255.

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