Re: SPL ArrayAccess offsetExists default behavior
| From: | Lukas Kahwe Smith | Date: | Sun, 25 Jan 2009 15:29:17 +0000 |
| Subject: | Re: SPL ArrayAccess offsetExists default behavior | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-42825@lists.php.net to get a copy of this message | ||
On 13.01.2009, at 16:58, Etienne Kneuss wrote:
Hello, On Tue, Jan 13, 2009 at 4:43 PM, Mark van der Velden <mark@dynom.nl> wrote:Hmm, maybe still worthwhile to classify it as a bug fix? :) regards, Lukas Kahwe Smith mls@pooteeweet.orgHi list, The following doesn't strike me as consistent behavior:This is indeed a small inconsistency. The problem is that by its name, offsetExists() should return true on those cases (similarly to array_key_exists or property_exists). Since it is directly called within isset(), isset() should return true as well. The problem is that checking the value would cause a offsetGet() to be called, which will be a BC break, so I'm not sure if it's worth changing.$a = new ArrayObject();$a["foobar"] = NULL; echo (int) isset( $a["foobar"] ); // Output: 1 While it's technically correct, I find it confusing. The reason is probably because of a array_key_exists (or property_exists) check within offsetExists() that do not take return false on a NULL value, unlike isset(). What say you ?