Req #72957 [Opn]: Null coalescing operator doesn't behave as expected with SimpleXMLElement

From: Date: Mon, 29 Aug 2016 10:24:50 +0000
Subject: Req #72957 [Opn]: Null coalescing operator doesn't behave as expected with SimpleXMLElement
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-203646@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=72957&edit=1 ID: 72957 Updated by: cmb@php.net Reported by: dailywatchdeal at gmail dot com Summary: Null coalescing operator doesn't behave as expected with SimpleXMLElement Status: Open Type: Feature/Change Request Package: SimpleXML related Operating System: Ubuntu PHP Version: 7.0.10 Block user comment: N Private report: N New Comment: > That's because $xml->elem2 exists and isn't null. If it is set and it is not NULL, shouldn't isset() return TRUE? The current behavior (<https://3v4l.org/1NYAA>) looks like a bug to me. Previous Comments: ------------------------------------------------------------------------ [2016-08-29 08:51:34] dailywatchdeal at gmail dot com According to the docs, ?? is the same as isset, just a different syntax. Maybe the documentation should be updated? ------------------------------------------------------------------------ [2016-08-28 20:14:55] requinix@php.net That's because $xml->elem2 exists and isn't null. isset works differently. ------------------------------------------------------------------------ [2016-08-28 18:42:20] dailywatchdeal at gmail dot com Description: ------------ According to the docs, the ?? operator checks if the 1st operand exists and is not null. In other words, it's equivalent to isset. When used to check if a SimpleXMLElement node exists, it doesn't work. Test script: --------------- <?php $xml = new SimpleXMLElement('<root><elem>Text</elem></root>'); echo 'elem2 is: ' . ($xml->elem2 ?? 'backup string'); echo 'elem2 is: ' . (isset($xml->elem2) ? $xml->elem2 : 'backup string'); Expected result: ---------------- elem2 is: backup string elem2 is: backup string Actual result: -------------- elem2 is: elem2 is: backup string ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=72957&edit=1

« previous php.bugs (#203646) next »