3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(-1); ini_set('display_errors', 1); class system_tags { function __call($name, $params) { return '(METHOD "' . $name . '" WAS CALLED)'; } } class App { function run() { // Prerequisites. $system_tags = new system_tags(); $core = new \stdClass(); $core->tags = array( 'hello' => 'tagHelloMethod', 'world' => 'tagWorldMethod', ); // Approach 1. $this->template = 'Blah blah {hello} blah blah {world}.'; $this->withStrReplace($core, $system_tags); echo $this->template . "\n"; // Approach 2. $this->template = 'Blah blah {hello} blah blah {world}.'; $this->withRegexReplaceCallback($core, $system_tags); echo $this->template . "\n"; } function withStrReplace($core, $system_tags) { foreach($core->tags as $tag_name => $tag_method) { $this->template = str_replace( '{' . $tag_name . '}', $system_tags->{$tag_method}(), $this->template ); } } function withRegexReplaceCallback($core, $system_tags) { $callback = static function ($matches) use ($system_tags) { return $system_tags->{$match['method_name']}(); }; foreach($core->tags as $tag_name => $tag_method) { $this->template = preg_replace_callback( '/\{(?<method_name>' . preg_quote($tag_name) . ')\}/', $callback, $this->template ); } } } $app = new App(); $app->run();
Output for git.master, git.master_jit
Deprecated: Creation of dynamic property App::$template is deprecated in /in/STYlX on line 23 Blah blah (METHOD "tagHelloMethod" WAS CALLED) blah blah (METHOD "tagWorldMethod" WAS CALLED). Warning: Undefined variable $match in /in/STYlX on line 48 Warning: Trying to access array offset on value of type null in /in/STYlX on line 48 Fatal error: Uncaught Error: Method name must be a string in /in/STYlX:48 Stack trace: #0 [internal function]: App::{closure}(Array) #1 /in/STYlX(52): preg_replace_callback('/\\{(?<method_na...', Object(Closure), 'Blah blah {hell...') #2 /in/STYlX(29): App->withRegexReplaceCallback(Object(stdClass), Object(system_tags)) #3 /in/STYlX(63): App->run() #4 {main} thrown in /in/STYlX on line 48
Process exited with code 255.
Output for rfc.property-hooks
Deprecated: Creation of dynamic property App::$template is deprecated in /in/STYlX on line 23 Blah blah (METHOD "tagHelloMethod" WAS CALLED) blah blah (METHOD "tagWorldMethod" WAS CALLED). Warning: Undefined variable $match in /in/STYlX on line 48 Warning: Trying to access array offset on null in /in/STYlX on line 48 Fatal error: Uncaught Error: Method name must be a string in /in/STYlX:48 Stack trace: #0 [internal function]: App::{closure}(Array) #1 /in/STYlX(52): preg_replace_callback('/\\{(?<method_na...', Object(Closure), 'Blah blah {hell...') #2 /in/STYlX(29): App->withRegexReplaceCallback(Object(stdClass), Object(system_tags)) #3 /in/STYlX(63): App->run() #4 {main} thrown in /in/STYlX on line 48
Process exited with code 255.

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
29.94 ms | 401 KiB | 8 Q