-
Notifications
You must be signed in to change notification settings - Fork 837
Open
Labels
Status: Needs TriagebugDocumentation contains incorrect informationDocumentation contains incorrect information
Description
Description
The following code:
<?php
class User {
public ?string $id {
get => $this->id; // get => $this->id ?? null; works
set => $this->id = $value;
}
}
class User2 {
public string $id;
}
$u = new User();
$u2 = new User2();
var_dump(isset($u2->id));//false OK
var_dump(isset($u->id));//errorResulted in this output:
First var_dump retuns false and this is ok, second - produces Fatal error: Uncaught Error: Typed property User::$id must not be accessed before initialization
But I expected this output instead:
false two times
This suggests that isset() on hooked properties may incorrectly trigger property access instead of checking initialization state, unlike regular typed properties.
PHP Version
PHP 8.5.0 (cli) (built: Nov 20 2025 19:17:11) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.5.0, Copyright (c) Zend Technologies
with Zend OPcache v8.5.0, Copyright (c), by Zend Technologies
PHP 8.4.15 (cli) (built: Nov 20 2025 17:43:25) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.4.15, Copyright (c) Zend Technologies
with Zend OPcache v8.4.15, Copyright (c), by Zend Technologies
with Xdebug v3.4.7, Copyright (c) 2002-2025, by Derick Rethans
Operating System
No response
Metadata
Metadata
Assignees
Labels
Status: Needs TriagebugDocumentation contains incorrect informationDocumentation contains incorrect information