In php 8.0: unable to distinguish between instance variable being null and unset

From: Date: Fri, 03 Sep 2021 12:08:58 +0000
Subject: In php 8.0: unable to distinguish between instance variable being null and unset
Groups: php.general 
Request: Send a blank email to php-general+get-327649@lists.php.net to get a copy of this message
Hello, Our codebase depends on distinguishing whether an instance variable is unset, or simply null: class C { public int $v = 123; } $x = new C; unset($x->v); $y = new C; $u->v = null; In php <8.0 we made this work with @array_key_exists($x, 'v'), which stopped working. isset($x->x) doesn't work, as it will return true for 'null' as well. property_exists($x, 'v') will always return true as long as the variable is declared: php-src here <https://github.com/php/php-src/blob/a13730c5e465b3c349a7970d15a49e4e132d4e07/Zend/zend_builtin_functions.c#L943> . Apart from using debug_zval_dump (too expensive), any hints? This feels like quite the oversight honestly :). Best, Emiel

« previous php.general (#327649) next »