> On Sat, 11 Aug 2012, Nikita Popov wrote:
>
>> Hi internals!
>>
>> I think there already was a lot of discussion on the generators, so
>> it's time to move to the next step. I'd like to vote on the feature in
>> two weeks, so this the "announce[ment] on internals@, by the author,
>> with the intention of voting on it".
>>
>>     https://wiki.php.net/rfc/generators
>>
>> If you have any further feedback, now would be a good time to raise
>> it. If there is something you previously posted, but which I didn't
>> yet address, please let me know. There were around 150 mails and I
>> sure missed some of them.
>
> I've some comments how that I've read the RFC:
>
>> Recognition of generator functions
>>
>> 1. Any function which contains a yield statement is automatically a
>> generator function.
>>
>> 2. The initial implementation required that generator functions are
>> marked with an asterix modifier (function*). This method has the
>> advantage that generators are more explicit and also allows for
>> yield-less coroutines.
>>
>> The automatic detection was chosen over the asterix modifier for the
>> following reasons:
>
> I am against this. This is even more magic in PHP. Is it really that
> difficult to have to mark the function with a different keyword, such as
> "generator":

Since this is yet another area where 'one does not have to use it if one
does not want to' ... FLAGGING to the other users that a function is a
'special one' rather than just a normal function with a generator function
seems to me just a necessity? HAVING to work through a functions code
simply to see if it contains a 'yeild' so as to understand that it's not
going to give a normal return seems insane? Alright the function can be
properly documented with a docblock, but if it isn't ...

>> generator function getLinesFromFile($fileName) {
>>     if (!$fileHandle = fopen($fileName, 'r')) {
>>        return;
>>    }
>
>>     There is an existing generator implementation in HipHop PHP, which
>> uses automatic-detection. Using the asterix modifier would break
>> compatibility.
>
> This should not be a concern, sure, it's annoying for the hiphop
> developers but they chose to copy and then *chance* the PHP language for
> their own effect.
>
>> yield: Yields the value null with an auto-incrementing integer key.
> What is the usecase for this?
I can see some interesting porting problems with this ... one of the stock
changes when moving from a MySQL only setup to support other databases is
to remove the auto-increment magic, and replace it with proper sequence
code prior to inserting. I can see translating a 'MySQL' geared generator
into a more general one as being impossible if some tricks like this are
used.

(Out in an exhibition hall this weekend so not able to follow properly)


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

Reply via email to