Re: [PHP-I18N] Re: [PHP-DEV] Re: TextIterator changes
[email protected] (Andrei Zmievski)
| Newsgroups | php.i18n,php.internals |
|---|---|
| Message-ID | <[email protected]> |
Thanks, I know what they are for. I remember discussing Iterator vs.
Traversable with you on IRC, and for some reason we settled on
Traversable. Anyway, I'm changing it now.
-Andrei
On Jun 24, 2006, at 2:35 AM, Marcus Boerger wrote:
> Hello Andrei,
>
> you should reconsider giving it full iterator interface. Adding more
> functionality is of course quite easy and no problem at all.
> Sharing an
> interface also makes the whole thing feel much better as in no
> conflicts
> as in consistent. Actually that's what interfaces are for.
>
> Friday, June 23, 2006, 11:20:28 PM, you wrote:
>
>> TextIterator does not implement Iterator interface, only Traversable.
>> It just happens to have functions of the same name as Iterator.
>
>> -Andrei
>
>> On Jun 23, 2006, at 2:16 PM, Michael Wallner wrote:
>
>>> Andrei Zmievski wrote:
>>>> I am working on implementing BreakIterator API [1]. I considered
>>>> two
>>>> approaches: making a separate class or merging the API into the
>>>> existing TextIterator. Having a separate class would be a bit
>>>> cleaner, but I can see people wanting to use it in foreach(), and
>>>> since TextIterator already provides a lot of BreakIterator's
>>>> functionality, I decided that merging would be the best option.
>>>> However, there is an overlap between the BreakIterator API and the
>>>> current TextIterator one, so there will have to be some changes.
>>>> 1. TextIterator::current() signature will change from:
>>>> mixed current()
>>>> to:
>>>> mixed current(integer &$offset)
>>>
>>> This will raise the same issue as we have/had with the reflection
>>> API:
>>> mike@honeybadger:~/build/php-unicode-debug$ cli -r 'interface
>>> i{function f();} class c implements i{function f($a){}}'
>>>
>>> Fatal error: Declaration of c::f() must be compatible with that of
>>> i::f() in Command line code on line 1
>>>
>>>
>>> Nah, don't look at me--I don't like that either.
>>>
>>>
>>>> 3. TextIterator::rewind() will be renamed to TextIterator::first
>>>> () to
>>>> conform to BreakIterator's first()/last() API.
>>>> So this is heads up. Let me know if you have a problem with this.
>>>
>>> Huh? Rename or alias? It can't implement Iterator if there's no
>>> rewind() method.
>
> Best regards,
> Marcus