Re: PHP 7.1 - Address PHPSadness #28?

From: Date: Wed, 23 Sep 2015 10:28:22 +0000
Subject: Re: PHP 7.1 - Address PHPSadness #28?
References: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  Groups: php.internals 
Request: Send a blank email to internals+get-88435@lists.php.net to get a copy of this message
On 23/09/15 10:57, Rowan Collins wrote: >> array_key_exists(“var”, get_defined_vars()) && is_null($var) > > I wondered if someone would mention that, but didn't want to drift too > far from the point, which was the "prior to call is_null()" part of > Lester's sentence was redundant, since the problem was entirely > unrelated to is_null(). That the more modern way of working would be to perhaps remain in the 'associative array' space is a fact. Using expand() and then rebuilding the expanded array along with all the other variables seems an even more torturous fix to a simple problem. Yes from one point of view the problem is not with is_null() and I can agree with that. The problem is that one can't establish that a call to is_null() is going to access a valid variable while only working in the simple procedural layer. While 'exists()' may seem to be unnecessary, it returns an answer which makes subsequent work flow a LOT more consistent. exists() -> empty() or is_null() answers all cases and isset() is redundant but for BC reasons can't be removed. Using isset() in place of exists() is NOT a valid substitution since one can't then call is_null() KNOWING that the variable does exist. If the variables are being created - or not - in this program flow, then a check for exists() will establish if the variable needs creating, while isset() will miss and overwrite a variable if it was quite legitimately already created as null. If the default state is 'null' then there is not a problem, but if that null is trying to override another default ... we have hopefully established that the null state is a natural result of interaction with a database, but PHP has lost some of that special handling by simply treating it as 'just another value' as now happens by namespaces being able to override it. -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk

« previous php.internals (#88435) next »