3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface GoAlgorithm { public function go(); } class GoByDrivingAlgorithm implements GoAlgorithm { public function go() { echo "Now I'm driving." .PHP_EOL; } } class GoByFlying implements GoAlgorithm { public function go() { echo "Now I'm flying." . PHP_EOL; } } class GoByFlyingFast implements GoAlgorithm { public function go() { echo "Now I'm flying fast" . PHP_EOL; } } class Vehicle { private $goAlgorithm = null; public function __construct(GoAlgorithm $goType = null) { $this->goAlgorithm = $goType; } public function setGoAlgorithm(GoAlgorithm $goType) { $this->goAlgorithm = $goType; } public function drive() { $this->goAlgorithm->go(); } } // setter injection $streetRacer = new Vehicle(); $streetRacer->setGoAlgorithm(new GoByDrivingAlgorithm()); $formulaone = new Vehicle(); $formulaone->setGoAlgorithm(new GoByDrivingAlgorithm()); $helicopter = new Vehicle(); $helicopter->setGoAlgorithm(new GoByFlying()); $jets = new Vehicle(); $jets->setGoAlgorithm(new GoByFlyingFast()); $streetRacer->drive(); $formulaone->drive(); $helicopter->drive(); $jets->drive(); // constructor injection $streetRacerByCtor = new Vehicle(new GoByDrivingAlgorithm()); $formulaoneByCtor = new Vehicle(new GoByDrivingAlgorithm()); $helicopterByCtor = new Vehicle(new GoByFlying()); $jetsByCtor = new Vehicle(new GoByFlyingFast()); $streetRacerByCtor->drive(); $formulaoneByCtor->drive(); $helicopterByCtor->drive(); $jetsByCtor->drive();
Output for 8.4.1 - 8.4.14, 8.5.0
Deprecated: Vehicle::__construct(): Implicitly marking parameter $goType as nullable is deprecated, the explicit nullable type must be used instead in /in/pnuv9 on line 36 Now I'm driving. Now I'm driving. Now I'm flying. Now I'm flying fast Now I'm driving. Now I'm driving. Now I'm flying. Now I'm flying fast
Output for 8.4.15
/bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15)
Process exited with code 1.
Output for 8.3.28
/bin/php-8.3.28: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.3.28)
Process exited with code 1.
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.17 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27
Now I'm driving. Now I'm driving. Now I'm flying. Now I'm flying fast Now I'm driving. Now I'm driving. Now I'm flying. Now I'm flying fast
Output for 5.0.0 - 5.0.5
Fatal error: Argument 1 must not be null in /in/pnuv9 on line 36
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING in /in/pnuv9 on line 3
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Parse error: parse error, unexpected T_STRING in /in/pnuv9 on line 3
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/pnuv9 on line 3
Process exited with code 255.

preferences:
155.97 ms | 414 KiB | 5 Q