3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(E_ALL); echo 'Here is __DIR__ to start: ' . "\n"; var_dump(__DIR__); echo "\n\n"; echo 'Checking if __DIR__ is defined...' . "\n"; if (!defined('__DIR__')) { echo 'Nope, defined() returned (bool)false.' . "\n"; echo 'No prob. Executing define(\'__DIR__\', \'/foo/bar\')...' . "\n"; define('__DIR__', '/foo/bar'); echo 'Done, defined __DIR__ as "/foo/bar".' . "\n" . "\n"; echo 'Double-checking __DIR__ is defined now...' . "\n"; if (!defined('__DIR__')) { echo 'WTF, defined(\'__DIR__\') again returned (bool)false?!' . "\n"; } else{ echo 'Strike, this time defined(\'__DIR__\') returned (bool)true.' . "\n"; } } else{ echo 'Yep, defined(\'__DIR__\') returned (bool)true.' . "\n"; } echo 'Finally, here is the result of var_dump(__DIR__):' . "\n"; var_dump(__DIR__);
Output for 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.20, 7.2.6 - 7.2.33, 7.3.12 - 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.6
Here is __DIR__ to start: string(3) "/in" Checking if __DIR__ is defined... Nope, defined() returned (bool)false. No prob. Executing define('__DIR__', '/foo/bar')... Done, defined __DIR__ as "/foo/bar". Double-checking __DIR__ is defined now... Strike, this time defined('__DIR__') returned (bool)true. Finally, here is the result of var_dump(__DIR__): string(3) "/in"
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Here is __DIR__ to start: Notice: Use of undefined constant __DIR__ - assumed '__DIR__' in /in/Ri9hB on line 5 string(7) "__DIR__" Checking if __DIR__ is defined... Nope, defined() returned (bool)false. No prob. Executing define('__DIR__', '/foo/bar')... Done, defined __DIR__ as "/foo/bar". Double-checking __DIR__ is defined now... Strike, this time defined('__DIR__') returned (bool)true. Finally, here is the result of var_dump(__DIR__): string(8) "/foo/bar"

preferences:
286.53 ms | 403 KiB | 354 Q