3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace Translatable { interface Translatable {} } namespace Translatable\Impl { use Translatable\Translatable; class Translatable1 implements Translatable {} class Translatable2 implements Translatable {} class Translatable3 implements Translatable {} } namespace Translation { use Translatable\Translatable; use Translation\Impl\BaseTranslator; interface Translator {} class TranslatorFactory { /** * @throws \ReflectionException */ public static function getTranslator(Translatable $a, Translatable $b): Translator { $translatorNamespace = (new \ReflectionClass(BaseTranslator::class))->getNamespaceName(); $translatorClassName = $translatorNamespace . '\\TranslatorFor' . (new \ReflectionClass($a))->getShortName() . 'And' . (new \ReflectionClass($b))->getShortName(); return new $translatorClassName(); } } } namespace Translation\Impl { use Translation\Translator; class BaseTranslator implements Translator {} class Translator1 extends BaseTranslator {} class_alias(Translator1::class, TranslatorForTranslatable1AndTranslatable2::class); class Translator2 extends BaseTranslator {} class_alias(Translator2::class, TranslatorForTranslatable1AndTranslatable3::class); class Translator3 extends BaseTranslator {} class_alias(Translator3::class, TranslatorForTranslatable2AndTranslatable3::class); } namespace { use Translatable\Impl\Translatable1; use Translatable\Impl\Translatable3; use Translation\TranslatorFactory; $translatable1 = new Translatable1(); $translatable3 = new Translatable3(); $translator = TranslatorFactory::getTranslator($translatable1, $translatable3); var_dump($translator); }
Output for 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.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14, 8.5.0
object(Translation\Impl\Translator2)#3 (0) { }
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.

preferences:
178.87 ms | 407 KiB | 5 Q