3v4l.org

run code in 300+ PHP versions simultaneously
<?php class InCommon { private $baz = 'foo'; public function out($pref){ echo "\n".$pref.'::$baz = '.$this->baz; } } class Foo extends InCommon {} class Bar extends InCommon { public function peek($target, $label){ echo "\n".'peek @'.$label.'::$baz = '.$target->baz; // we see the effects of our modification } public function mess($target){ $target->baz = 'cats'; // "private" isn't private? } } $foo = new Foo(); $bar = new Bar(); $bar->mess($foo); // why does this NOT throw an error about modifying a private? $bar->peek($foo, 'Foo'); // this is cats... so I access a private (again, no error), and it has the value I changed it to $foo->out('Foo'); // echoing its own $baz, should be "cats", but it isn't
Output for git.master, git.master_jit, rfc.property-hooks
Deprecated: Creation of dynamic property Foo::$baz is deprecated in /in/9pl3D on line 16 peek @Foo::$baz = cats Foo::$baz = foo

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:
38.56 ms | 401 KiB | 8 Q