3v4l.org

run code in 300+ PHP versions simultaneously
<?php class ServiceContainer { protected $services = []; public function get($id, callable $creator) { // Нет в кэше? Берём из creator'а. todo: Сделать защиту от цикличных зависимостей if (! isset($this->services[$id])) $this->services[$id] = $creator(); // Возвращаем кэш return $this->services[$id]; } public function set($id, $service) { $this->services[$id] = $service; } } class Framework { private static $services = null; public static function getServices() { if (is_null(self::$services)) { throw new \Exception('Не инициализировано'); } return self::$services; } public static function init(ServiceContainer $services = null) // Можно в качестве аргумента передать нужную реализацию ServiceContainer { if ( $services ) self::$services = $services; else self::$services = new ServiceContainer(); } public static function run() { // Маршрутизация => Контроллер => Выполнение Response } public static function getRouter() { return static::getServices()->get('framework.router', function() { return "router"; }); } } class CMS extends Framework { private static $services = null; public static function getServices() { if (is_null(self::$services)) { throw new \Exception('Не инициализировано (говорит CMS)'); } return self::$services; } public static function run() { // Маршрутизация => Встроенные контроллеры/Модули => Выполнение Response } public static function getModulesManager() { return static::getServices()->get('cms.modulesmanager', function() { return "modulesManager"; }); } } // based on framework Framework::init() && Framework::run(); // где-то в компоненте: var_dump(Framework::getRouter()); // based on CMS CMS::init() && CMS::run(); // где-то в модуле: var_dump(CMS::getRouter()); var_dump(CMS::getModulesManager()); CMS::getServices()->set('framework.router', 'Ha, its not router!'); var_dump(CMS::getRouter());

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.60.0120.00316.63
8.3.50.0090.00616.63
8.3.40.0140.00018.85
8.3.30.0110.00418.79
8.3.20.0050.00320.26
8.3.10.0080.00023.70
8.3.00.0040.00423.54
8.2.180.0040.01118.29
8.2.170.0100.01022.96
8.2.160.0120.00320.52
8.2.150.0030.00524.18
8.2.140.0080.00024.66
8.2.130.0030.00521.18
8.2.120.0050.00326.35
8.2.110.0070.00320.49
8.2.100.0070.00717.93
8.2.90.0030.00519.33
8.2.80.0030.00617.97
8.2.70.0060.00317.63
8.2.60.0000.00817.93
8.2.50.0030.00618.07
8.2.40.0040.00422.19
8.2.30.0000.00720.56
8.2.20.0000.00817.70
8.2.10.0050.00518.14
8.2.00.0000.00918.13
8.1.280.0100.00725.92
8.1.270.0080.00023.77
8.1.260.0060.00328.09
8.1.250.0040.00428.09
8.1.240.0060.00322.46
8.1.230.0080.00417.82
8.1.220.0040.00417.74
8.1.210.0040.00418.77
8.1.200.0070.00317.38
8.1.190.0090.00017.34
8.1.180.0050.00318.10
8.1.170.0060.00318.57
8.1.160.0050.00320.78
8.1.150.0040.00418.92
8.1.140.0030.00519.60
8.1.130.0070.00017.71
8.1.120.0000.00717.48
8.1.110.0030.00717.37
8.1.100.0040.00417.53
8.1.90.0030.00517.39
8.1.80.0040.00417.48
8.1.70.0000.00717.46
8.1.60.0020.00517.55
8.1.50.0040.00417.58
8.1.40.0050.00317.57
8.1.30.0050.00517.72
8.1.20.0030.00517.65
8.1.10.0000.00717.47
8.1.00.0060.00317.60
8.0.300.0040.00418.77
8.0.290.0050.00216.75
8.0.280.0040.00418.50
8.0.270.0070.00017.34
8.0.260.0030.00317.27
8.0.250.0070.00016.88
8.0.240.0030.00617.00
8.0.230.0030.00317.05
8.0.220.0040.00416.85
8.0.210.0040.00416.88
8.0.200.0030.00316.92
8.0.190.0040.00417.00
8.0.180.0000.00716.91
8.0.170.0040.00416.94
8.0.160.0070.00017.04
8.0.150.0040.00416.82
8.0.140.0000.00816.94
8.0.130.0030.00313.44
8.0.120.0050.00316.89
8.0.110.0040.00416.88
8.0.100.0040.00416.75
8.0.90.0040.00416.92
8.0.80.0060.01016.99
8.0.70.0000.00717.08
8.0.60.0050.00316.91
8.0.50.0050.00516.96
8.0.30.0120.00717.13
8.0.20.0170.01717.40
8.0.10.0040.00417.21
8.0.00.0120.01116.86
7.4.330.0000.00516.82
7.4.320.0060.00016.43
7.4.300.0000.00716.53
7.4.290.0000.00716.51
7.4.280.0050.00416.55
7.4.270.0000.00816.62
7.4.260.0030.00616.44
7.4.250.0070.00016.62
7.4.240.0050.00316.61
7.4.230.0070.00016.62
7.4.220.0120.00816.46
7.4.210.0100.00316.62
7.4.200.0000.00816.46
7.4.160.0130.00316.82
7.4.150.0220.01817.40
7.4.140.0160.00417.86
7.4.130.0120.00616.52
7.4.120.0130.00516.67
7.4.110.0120.01216.38
7.4.100.0060.01616.38
7.4.90.0070.01116.56
7.4.80.0070.01319.39
7.4.70.0110.00616.36
7.4.60.0040.01316.50
7.4.50.0120.00316.62
7.4.40.0030.01316.66
7.4.30.0180.00016.43
7.4.00.0060.00915.23
7.3.330.0000.00513.31
7.3.320.0050.00013.37
7.3.310.0000.00716.44
7.3.300.0030.00316.46
7.3.290.0120.00416.42
7.3.280.0060.01016.48
7.3.270.0080.01117.40
7.3.260.0080.00916.54
7.3.250.0080.00916.40
7.3.240.0130.00616.46
7.3.230.0130.01316.51
7.3.210.0080.00816.60
7.3.200.0070.01016.55
7.3.190.0070.01016.44
7.3.180.0090.00616.50
7.3.170.0130.00416.69
7.3.160.0060.00916.56
7.2.330.0120.00916.81
7.2.320.0130.00316.62
7.2.310.0090.00616.75
7.2.300.0130.01016.83
7.2.290.0130.01016.61
7.2.60.0030.01017.06
7.2.00.0030.00919.64
7.1.200.0070.00715.70
7.1.100.0050.00318.29
7.1.70.0000.01017.30
7.1.60.0110.01119.52
7.1.50.0040.00716.78
7.1.00.0100.06722.30
7.0.200.0750.00914.87
7.0.60.0070.06019.93
7.0.50.0030.04318.02
7.0.40.0070.04020.24
7.0.30.0300.03320.33
7.0.20.0300.07720.09
7.0.10.0100.04720.30
7.0.00.0100.05020.06
5.6.280.0030.06321.12
5.6.210.0100.07020.64
5.6.200.0070.04718.14
5.6.190.0000.09720.46
5.6.180.0230.07320.34
5.6.170.0270.08720.54
5.6.160.0100.08020.54
5.6.150.0130.07718.29
5.6.140.0070.04018.15
5.6.130.0030.08318.12
5.6.120.0070.04021.04
5.6.110.0100.08021.07
5.6.100.0130.08021.09
5.6.90.0200.06321.04
5.6.80.0070.08020.54
5.5.350.4130.04720.46
5.5.340.0070.03718.08
5.5.330.0070.08320.27
5.5.320.0200.08020.27
5.5.310.0270.05020.37
5.5.300.0170.07017.98
5.5.290.0200.08017.97
5.5.280.0130.08020.89
5.5.270.0030.09020.99
5.5.260.0230.06720.98
5.5.250.0100.03320.57
5.5.240.0170.06020.18

preferences:
49.76 ms | 400 KiB | 5 Q