3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php declare(strict_types = 1); class Test { private function parseDocComment(string $comment): array { $result = []; foreach (\preg_split('#[\r\n]+#', $comment, -1, \PREG_SPLIT_NO_EMPTY) as $line) { if (\preg_match('#\s\*\s*@([a-z0-9\-_])\s*(.*)#i', $line, $match)) { $result[$match[1]] = $match[2] ?? ''; } } var_dump($result); return $result; } public function __call(string $name, array $arguments) { $objectReflection = new \ReflectionObject($this); if (!$objectReflection->hasMethod($name)) { throw new Exception('Invalid route target: ' . self::class . '::' . $name); } $methodReflection = $objectReflection->getMethod($name); if (false === $comment = $methodReflection->getDocComment()) { throw new Exception('Invalid route target: ' . self::class . '::' . $name); } $comment = $this->parseDocComment($comment); if (!isset($comment['json'])) { throw new Exception('Invalid route target: ' . self::class . '::' . $name); } return $this->{$name}(...$arguments); } /** * @json */ private function method() { echo ":-("; } } (new Test)->method();
based on T8e3g
Output for 7.0.0 - 7.3.0rc3
array(1) { ["j"]=> string(3) "son" } Fatal error: Uncaught Exception: Invalid route target: Test::method in /in/TAfBY:37 Stack trace: #0 /in/TAfBY(52): Test->__call('method', Array) #1 {main} thrown in /in/TAfBY on line 37
Process exited with code 255.
Output for hhvm-3.15.4
array(1) { ["j"]=> string(3) "son" } Fatal error: Uncaught exception 'Exception' with message 'Invalid route target: Test::method' in /in/TAfBY:37 Stack trace: #0 /in/TAfBY(52): Test->__call() #1 {main}
Process exited with code 255.
Output for 5.6.0 - 5.6.30
Warning: Unsupported declare 'strict_types' in /in/TAfBY on line 1 Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/TAfBY on line 5
Process exited with code 255.