Hello Andrew,
if we go the array_get() route as a short half solution to hopefully make
a lot of people happy (at least it would serve $_GET/_REQUEST etc needs).
Then I think we should make it a bit more useable:
Get the default or the multilevel subscription of $ar
proto mixed array_get(array $ar, mixed index*, mixed $default)
function array_get(array $ar) {
$ret = $ar;
for ($i=1; $i < func_num_args() - 1; ++$i) {
$idx = func_get_arg($i);
if (array_key_exists($idx, $ret)) {
$ret = $ret[$idx];
} else {
if (func_num_args() > 1) {
return func_get_arg(func_num_args() - 1);
} else {
return NULL;
}
}
}
return $ret;
}
best regards
marcus
Thursday, September 13, 2007, 2:54:51 PM, you wrote:
> On Sep 12, 2007, at 2:25 PM, Lukas Kahwe Smith wrote:
>> Andrew Shearer wrote:
>>
>>> Meanwhile, array_get() provides the most-needed functionality
>>> while avoiding
>>> the issues that prevented ifsetor's acceptance.
>>
>> Aside from lack of BC hacks what is the issue? I remember some
>> fussing about the name, but I find this a joke of an argument. You
>> cant get much clearer a name than ifsetor().
>>
>>> There's a backward compatibility problem with ifsetor: its special
>>> syntax
>>> means that there's no way to write a pure-PHP userland version of
>>> it. The
>>> effect is that there's no upgrade path for applications that have to
>>> straddle both old and new versions of PHP, and practical
>>> usefulness of
>>> ifsetor would be delayed for years after release.
>>
>>
>> I use ifsetor() type functionality on a daily basis. As such I
>> would appreciate it if it would be an operator and would make its
>> way not only into php 6, but also php 5.3.
>>
>> Marcus's half solution is not a solution to what I need. Andrew's
>> solution gets close enough to solve my real world needs. Now if I
>> could just see the slightest bit if a real argument against ifsetor
>> (), I might even vote for array_get() (not sure if I appreciate the
>> name though).
>>
>> regards,
>> Lukas
> I think we want the same thing. We both want the essential
> functionality in PHP one way or another. If ifsetor was in the
> running now, I'd support it. But after seeing the discussion and lack
> of consensus on it since 2004, I'm sure that the best way to reach
> the goal is to champion array_get().
> Other suggestions for the name are welcome, but the choice of it was
> careful. array_get() has at least one precendent, the Python dict.get
> () method, which works basically the same way. The fact that the same
> name and function signature (give or take a reference) was also
> suggested completely independently in a PHP wishlist item means it's
> probably on the right track.
> --
> Andrew Shearer
> http://ashearer.com/
Best regards,
Marcus
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php