3v4l.org

run code in 500+ PHP versions simultaneously
<?php const PHPCS_CONFIG_KEY = 'installed_paths'; function fakeOldLoadInstalledPaths($output) { $result = []; $phpcsInstalledPaths = str_replace(PHPCS_CONFIG_KEY . ': ', '', $output); $phpcsInstalledPaths = trim($phpcsInstalledPaths); if ($phpcsInstalledPaths !== '') { $result = explode(',', $phpcsInstalledPaths); } return $result; } function fakeNewLoadInstalledPaths($output) { $result = []; $regex = '`' . PHPCS_CONFIG_KEY . ':[^\r\n]+`'; if (preg_match($regex, $output, $match) !== 1) { return $result; } //var_dump($match); $phpcsInstalledPaths = str_replace(PHPCS_CONFIG_KEY . ': ', '', $match[0]); $phpcsInstalledPaths = trim($phpcsInstalledPaths); if ($phpcsInstalledPaths !== '') { $result= explode(',', $phpcsInstalledPaths); } return $result; } $dataProvider = [ 'phpcs-2.x-no-config-file' => [ 'input' => '', 'expected' => [], ], 'phpcs-2.x-only-installed-paths' => [ 'input' => 'installed_paths: path/to/somecloned-stnd', 'expected' => [ 'path/to/somecloned-stnd', ], ], 'phpcs-2.x-config-file-one-standard' => [ 'input' => 'default_standard: Squiz installed_paths: ../../phpcompatibility/php-compatibility show_progress: 1', 'expected' => [ '../../phpcompatibility/php-compatibility', ], ], 'phpcs-2.x-config-file-two-standards' => [ 'input' => 'default_standard: Squiz installed_paths: ../../phpcompatibility/php-compatibility,../../sirbrillig/phpcs-variable-analysis show_progress: 1', 'expected' => [ '../../phpcompatibility/php-compatibility', '../../sirbrillig/phpcs-variable-analysis', ], ], 'phpcs-3.1.0-no-config-file' => [ 'input' => 'Using config file:', 'expected' => [], ], 'phpcs-3.1.0-only-installed-paths' => [ 'input' => 'Using config file: I:/path/to/project/vendor/squizlabs/php_codesniffer/CodeSniffer.conf installed_paths: path/to/somecloned-stnd', 'expected' => [ 'path/to/somecloned-stnd', ], ], 'phpcs-3.1.0-config-file-one-standard' => [ 'input' => 'Using config file: I:/path/to/project/vendor/squizlabs/php_codesniffer/CodeSniffer.conf default_standard: Squiz installed_paths: ../../phpcompatibility/php-compatibility show_progress: 1', 'expected' => [ '../../phpcompatibility/php-compatibility', ], ], 'phpcs-3.1.0-config-file-two-standards' => [ 'input' => 'Using config file: I:/path/to/project/vendor/squizlabs/php_codesniffer/CodeSniffer.conf default_standard: Squiz installed_paths: ../../phpcompatibility/php-compatibility,../../sirbrillig/phpcs-variable-analysis show_progress: 1', 'expected' => [ '../../phpcompatibility/php-compatibility', '../../sirbrillig/phpcs-variable-analysis', ], ], ]; echo '=== Testing OLD logic ==='; foreach ($dataProvider as $name => $testData) { echo PHP_EOL, 'Testing case ', $name, ': '; $result = fakeOldLoadInstalledPaths($testData['input']); if ($testData['expected'] === $result) { echo 'SUCCESS!'; } else { echo 'FAILED :-(', PHP_EOL, 'Actual saved value:', PHP_EOL; var_dump($result); } } echo PHP_EOL, PHP_EOL, '=== Testing NEW logic ===', PHP_EOL; foreach ($dataProvider as $name => $testData) { echo PHP_EOL, 'Testing case ', $name, ': '; $result = fakeNewLoadInstalledPaths($testData['input']); if ($testData['expected'] === $result) { echo 'SUCCESS!'; } else { echo 'FAILED :-(', PHP_EOL, 'Actual saved value:', PHP_EOL; var_dump($result); } }
Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 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.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
=== Testing OLD logic === Testing case phpcs-2.x-no-config-file: SUCCESS! Testing case phpcs-2.x-only-installed-paths: SUCCESS! Testing case phpcs-2.x-config-file-one-standard: FAILED :-( Actual saved value: array(1) { [0]=> string(85) "default_standard: Squiz ../../phpcompatibility/php-compatibility show_progress: 1" } Testing case phpcs-2.x-config-file-two-standards: FAILED :-( Actual saved value: array(2) { [0]=> string(65) "default_standard: Squiz ../../phpcompatibility/php-compatibility" [1]=> string(60) "../../sirbrillig/phpcs-variable-analysis show_progress: 1" } Testing case phpcs-3.1.0-no-config-file: FAILED :-( Actual saved value: array(1) { [0]=> string(18) "Using config file:" } Testing case phpcs-3.1.0-only-installed-paths: FAILED :-( Actual saved value: array(1) { [0]=> string(113) "Using config file: I:/path/to/project/vendor/squizlabs/php_codesniffer/CodeSniffer.conf path/to/somecloned-stnd" } Testing case phpcs-3.1.0-config-file-one-standard: FAILED :-( Actual saved value: array(1) { [0]=> string(174) "Using config file: I:/path/to/project/vendor/squizlabs/php_codesniffer/CodeSniffer.conf default_standard: Squiz ../../phpcompatibility/php-compatibility show_progress: 1" } Testing case phpcs-3.1.0-config-file-two-standards: FAILED :-( Actual saved value: array(2) { [0]=> string(154) "Using config file: I:/path/to/project/vendor/squizlabs/php_codesniffer/CodeSniffer.conf default_standard: Squiz ../../phpcompatibility/php-compatibility" [1]=> string(60) "../../sirbrillig/phpcs-variable-analysis show_progress: 1" } === Testing NEW logic === Testing case phpcs-2.x-no-config-file: SUCCESS! Testing case phpcs-2.x-only-installed-paths: SUCCESS! Testing case phpcs-2.x-config-file-one-standard: SUCCESS! Testing case phpcs-2.x-config-file-two-standards: SUCCESS! Testing case phpcs-3.1.0-no-config-file: SUCCESS! Testing case phpcs-3.1.0-only-installed-paths: SUCCESS! Testing case phpcs-3.1.0-config-file-one-standard: SUCCESS! Testing case phpcs-3.1.0-config-file-two-standards: SUCCESS!
Output for 5.3.0 - 5.3.29
Parse error: syntax error, unexpected '[' in /in/XKMIf on line 6
Process exited with code 255.
Output for 4.4.2 - 4.4.9, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Parse error: syntax error, unexpected T_CONST in /in/XKMIf 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, 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_CONST in /in/XKMIf on line 3
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/XKMIf on line 3
Process exited with code 255.

preferences:
327.71 ms | 3670 KiB | 4 Q