Implicit Arrays and E_STRICT

php.internals

Sara Golemon

22 years ago
This topic got quietly dropped last week, but I'd like to make one last plea. I'd like to see Zend throw an E_STRICT when arrays are implicitly created. I know there were objections to E_NOTICE, but did anyone have violent objections to E_STRICT? -Sara

Christian Schneider

22 years ago
Sara Golemon wrote:
> plea. I'd like to see Zend throw an E_STRICT when arrays are implicitly > created. I know there were objections to E_NOTICE, but did anyone have > violent objections to E_STRICT?
I guess the question is whether we want to deprecate the automatic array creation at some point as E_STRICT is meant for that case. Otherwise we are abusing E_STRICT and might render it unusable to some degree. (From the description in the php.ini file E_NOTICE seems more appropriate as people who auto-init arrays probably also use uninitialized variables and thus don't use E_NOTICE anyway.) My .02, - Chris

John Coggeshall

22 years ago
On Fri, 2004-05-07 at 18:26, Christian Schneider wrote:
> I guess the question is whether we want to deprecate the automatic array > creation at some point as E_STRICT is meant for that case. Otherwise we > are abusing E_STRICT and might render it unusable to some degree.
I was also under the impression that E_STRICT was for depreciated items. If there is some sort of agreement that automagic array construction is a bad thing*, then I believe it should be E_NOTICE. John * - Personally, I tend to disagree that there is a need for a warning, it just seems like another difference between PHP 4 and PHP 5 that really doesn't buy people much.
-- -=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=- John Coggeshall http://www.coggeshall.org/ The PHP Developer's Handbook http://www.php-handbook.com/ -=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=-

Marcus Börger

22 years ago
Hello Sara, i like to see one of those too and i have no preference for one of them. marcus Friday, May 7, 2004, 11:05:15 PM, you wrote:
> This topic got quietly dropped last week, but I'd like to make one last > plea. I'd like to see Zend throw an E_STRICT when arrays are implicitly > created. I know there were objections to E_NOTICE, but did anyone have > violent objections to E_STRICT?
> -Sara
-- Best regards, Marcus mailto:helly@php.net

Jason Garber

22 years ago
I would view implicit array creation as a slightly negative thing, similar to accessing the value of a variable that does not exist. We run in E_ALL mode and write our code to avoid all E_NOTICEs. For instance, before using an array, I always initialize it using $aItems = array(); I'm in favor of issuing an E_NOTICE in response to this. ~Jason At 5/8/2004 12:43 AM +0200, Marcus Boerger wrote:

Jevon Wright

22 years ago
Won't you then have to recursively initialise multiple dimension arrays? $a = array(); $a[0] = array(); Otherwise, isn't this implicitly creating arrays? (I didn't quite understand the last time) Jevon ----- Original Message ----- From: "Jason Garber" <jason@ionzoft.com> To: <internals@lists.php.net> Sent: Saturday, May 08, 2004 12:25 PM Subject: Re: [PHP-DEV] Implicit Arrays and E_STRICT
> I would view implicit array creation as a slightly negative thing, similar > to accessing the value of a variable that does not exist. > > We run in E_ALL mode and write our code to avoid all E_NOTICEs. For > instance, before using an array, I always initialize it using $aItems = > array(); > > I'm in favor of issuing an E_NOTICE in response to this. > > ~Jason > > At 5/8/2004 12:43 AM +0200, Marcus Boerger wrote: > >Hello Sara, > > > >i like to see one of those too and i have no preference for one of them. > > > >marcus > > > >Friday, May 7, 2004, 11:05:15 PM, you wrote: > > > > > This topic got quietly dropped last week, but I'd like to make one
last
> > > plea. I'd like to see Zend throw an E_STRICT when arrays are
implicitly
> > > created. I know there were objections to E_NOTICE, but did anyone
have

Sara Golemon

22 years ago
> > > This topic got quietly dropped last week, but I'd like to make one
last
> > > plea. I'd like to see Zend throw an E_STRICT when arrays are
implicitly
> > > created. I know there were objections to E_NOTICE, but did anyone
have
> > > violent objections to E_STRICT? > > > > >i like to see one of those too and i have no preference for one of them. > > > I would view implicit array creation as a slightly negative thing, similar > to accessing the value of a variable that does not exist. > > We run in E_ALL mode and write our code to avoid all E_NOTICEs. For > instance, before using an array, I always initialize it using $aItems = > array(); > > I'm in favor of issuing an E_NOTICE in response to this. >
As Andi stated in the earlier incarnation of this thread (I think it was Andi), making an E_NOTICE will cause sudden errror generation in previously E_ALL safe code. While I *personally* would rather see E_NOTICE used, I can certainly understand the desire to tread lightly on what has long been considered a "feature" of PHP. That's why I think that E_STRICT qualifies as an effective compromise between encouraging good coding practices and avoiding BC breaking changes which add little to actual scrript execution. -Sarra

Andi Gutmans

22 years ago
Hi Sara, I don't think any error message should be thrown during implicit array creation. Not having to define your variables is one of the main principles of the PHP language. I definitely don't think this should be changed. I also don't see how this differs very much from a regular assignment to an undefined variable (e.g. $var = 2; ). I think making this an error, even an E_STRICT is a very bad move. Andi At 06:39 PM 5/7/2004 -0700, Sara Golemon wrote:

Sara Golemon

22 years ago
> I don't think any error message should be thrown during implicit array > creation. Not having to define your variables is one of the main
principles
> of the PHP language. I definitely don't think this should be changed. I > also don't see how this differs very much from a regular assignment to an > undefined variable (e.g. $var = 2; ). >
It differs in that if $var is already defined, doing $var = 2; COMPLETELY overwrites it. However if $array is already defined, then $array[] ADDS to it. I see implicit array creation as "bad" in the same way that register_globals is "bad". That is to say, it's not inherently evil, just prone to unexpected behavior when not used correctly.
> I think making this an error, even an E_STRICT is a very bad move. >
Then we differ on that. Because I think it would be a useful tool for helping the conscientious scripter avoid little, but potentially harmful mistakes. -Sara