3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Foo { public function __set($name, $value) { echo "__set($name)\n"; return $this->bar($name, $value); } public function bar($name, $value) { echo "bar($name)\n"; $this->foo = $value; } } echo "Calling via accessor:\n"; $foo = new Foo; $foo->foo = 42; echo "Calling method directly:\n"; $foo = new Foo; $foo->bar('foo', 42);
Output for 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
Calling via accessor: __set(foo) bar(foo) Deprecated: Creation of dynamic property Foo::$foo is deprecated in /in/dpYOj on line 11 Calling method directly: bar(foo) __set(foo) bar(foo) Deprecated: Creation of dynamic property Foo::$foo is deprecated in /in/dpYOj on line 11
Output for 8.1.0 - 8.1.28
Calling via accessor: __set(foo) bar(foo) Calling method directly: bar(foo) __set(foo) bar(foo)

preferences:
70.15 ms | 401 KiB | 62 Q