3v4l.org

run code in 500+ PHP versions simultaneously
<?php class X { protected string $foo; public function __isset($name) { echo "__isset called\n"; // This is the same like in line 22. So why it doesn't call __isset() again if (!isset($this->foo)) { return true; }; return false; } public function test_isset() { var_dump(isset($this->foo)); // Is false always unset($this->foo); var_dump(isset($this->foo)); // This should be false, but it calls __isset(). } } (new X())->test_isset();
Output for 8.2.31, 8.3.0 - 8.3.31, 8.4.1 - 8.4.21, 8.5.0 - 8.5.7
bool(false) __isset called bool(true)

preferences:
24.69 ms | 733 KiB | 4 Q