Re: Unexpected "silent" type-cast with initialized but un-set members
| From: | Jochem Maas | Date: | Thu, 16 Feb 2006 12:45:19 +0000 |
| Subject: | Re: Unexpected "silent" type-cast with initialized but un-set members | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-21881@lists.php.net to get a copy of this message | ||
Morten Fangel wrote:
On Thursday 16 February 2006 12:39, Antony Dovgal wrote:if that is the logic being applied in the engine then one might to wonder why a function such as array_merge() was changed to emit a warning when any of it's arguments are not arrays (whereas sometime in the past it used to swallow [and I assume 'autocast'] whatever it was given without a hiccup). I have been told that such warnings as array_merge() now emits are for my own good (in not so many words I was told it was "to protect me from my stupid self"), if it's good for me when I use array_merge() why not when an object is created implicitly (as in the example above)? actually my preference would be to drop the warning in array_merge() in this case (it seems like a more php way of doing things, imo) <!-- unset($a); $a->i = 1; // this is not a problem $b = 1; $c = 2; $d = array_merge($b, $c); // but this is bad programming? --> I'm very interested to learn what people think about this kind of thing in general - and obviously if someone knows of material that explains the reasoning behind the percieved inconsistency/problem I'd be very grateful. tar, jochem<?php $a->bar = 1; var_dump($a); ?> This code is much simpler, huh?Yeah, I must have been blinded by the lights. It merely resembles $foo['bar'] = 'baz'; Where $foo is cast as an array without the need to do $foo = array(); first. So I guess there is no need for a notice when you apply the same "pattern" to an object.