3v4l.org

run code in 300+ PHP versions simultaneously
<?php // define the common interface interface StorageInterface { function store($key, $value); function retrieve($key); } // implement functionality common to descendants abstract class Storage implements StorageInterface { protected function normalizeKey($key) { return $normalizedKey; } protected function someOtherUtilityFunction() {} } // concrete implementations class S3 extends Storage { protected $backend; public function __construct(S3object $backend) { $this->backend = $backend; } public function store($key, $value) {} public function retrieve($key) {} } class DBX extends Storage { protected $backend; public function __construct(DBXobject $backend) { $this->backend = $backend; } public function store($key, $value) {} public function retrieve($key) {} } // maybe GCS is a completely different beast and can't/shouldn't descend from Storage class GoogleCloudStorage implements StorageInterface { protected $backend; public function __construct(GCSobject $backend) { $this->backend = $backend; } public function store($key, $value) {} public function retrieve($key) {} } // so long as the object implements the interface we don't care about its parentage class MyThingThatNeedsStorage { public function __construct(StorageInterface $storage) {} public function doSomething() { $this->storage->retrieve('foo'); } }
Output for 7.1.0 - 7.1.33, 7.2.0 - 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.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

preferences:
135.58 ms | 402 KiB | 208 Q