On Fri, Jul 13, 2012 at 3:55 PM, Matthew Weier O'Phinney
<weierophin...@php.net> wrote:
> On 2012-07-13, David Muir <davidkm...@gmail.com> wrote:
>> On 13/07/12 01:04, Matthew Weier O'Phinney wrote:
>> > On 2012-07-12, Sara Golemon <poll...@php.net> wrote:
>> > > --e89a8f235453d7a80104c4975c55
>> > > On Wed, Jul 11, 2012 at 5:39 PM, Anthony Ferrara <ircmax...@gmail.com> 
>> > > wrote:
>> > > > One thing to keep in mind when doing this is to think about 
>> > > > consistency.
>> > > > I think that's a huge point not to be taken lightly. For that reason, I
>> > > > think that this API should not be used for any of the array_* 
>> > > > functions.
>> > > > Meaning that array_sum(), etc should all take arrays only.
>> > > >
>> > > > Then, other non-array functions (such as str_replace, etc) can be 
>> > > > modified
>> > > > to use this new method.
>> > > >
>> > > > Just my $0.02 anyway...
>> > > >
>> > > Sounds like everyone agrees the API is useful, just question marks over
>> > > which existing methods should profit by it.
>> > >
>> > > To add my $0.02, it'd be nice to work in a zend_parse_parameters() type 
>> > > for
>> > > this.  Keep extension code clean and ensures any temporary iterators get
>> > > destructed.
>> > Another note: if this comes to fruition, since arrays and traversable 
>> > objects
>> > would in many cases be interchangeable, it would be nice to have a 
>> > type-hint for
>> > "array-like" behavior:
>> >
>> >     function doSomething (ArrayLike $options) { ... }
>> >
>> > A better name could likely be used, but you get the idea.
>>
>> What about extending the array typehint include ArrayAccess, and extend
>> the Traversable typehint to include arrays?
>
> This would work for Traversable, as that interface does not define any 
> methods,
> and the only use case would be for iteration. This would answer most use
> cases/issues I've had (need either an array or Traversable in order to 
> iterate).
>
> For arrays, however, it's a bit harder, as the reason for typehinting on array
> may not be solely access of members, but _also_ iteration. As such, extending
> the array typehint to include ArrayAccess could lead to issues when the object
> implementing ArrayAccess does not also implement Traversable. I don't think 
> this
> would work at all semantically.

Yep, today we have :
- arrays
- Object implementing ArrayAccess
- Objects implementing Traversable (Iterator)
- array_****() functions not working with ArrayAccess' objects
- Iterator API not working with arrays (ArrayIterator needed)
- ... I forget things

There sure is something to do with that to make a consistent API.
So what would be the right answer to make all those ideas join in a
sane way everybody agree with ?
I got no clue, but I think we should answer this Q for 5.5

Cheers,

Julien.P

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to