2011/9/19 Etienne Kneuss <col...@php.net>:
> Hi,
>
> On Mon, Sep 19, 2011 at 12:40, Etienne Kneuss <col...@php.net> wrote:
>
>> Hi,
>>
>> On Mon, Sep 19, 2011 at 12:18, Gustavo Lopes <glo...@nebm.ist.utl.pt>wrote:
>>
>>> Em Mon, 19 Sep 2011 10:56:03 +0100, Etienne Kneuss <col...@php.net>
>>> escreveu:
>>>
>>>
>>>
>>>> Apparently you guys are speaking about the initial implementation of an
>>>> abstract method, while I was talking about overriding a method, which is
>>>> not the relly same. So the above doesn't really apply.
>>>>
>>>> The initial implementation of an abstract method should match the
>>>> signature,
>>>> while overriding a method should be able to loosen the precondition in
>>>> many ways (type hints change, less arguments, etc..), IMO.
>>>>
>>>>
>>> I should like to hear why. As far as I can see, there's absolutely no
>>> difference. All I've seen in this thread to this respect are semantic
>>> pseudo-arguments.
>>>
>>
>> Well it is about semantics, and IMO defining a method as abstract is some
>> sort of declaration, and this declaration should be respected when the
>> method is actually implemented.
>>
>> On the other hand, interfaces define usage capabilities, and those usages
>> should work.
>>
>> There might be close to no difference in the way the are internall handled
>> currently, but IMO there is a semantic difference between the two.
>>
>
> Given that the discussion has now gone into many directions:
> - constructors/normal methods
> - abstract/interfaces/overriding
>
> Let me write some small RFC describing what we currently do w.r.t. prototype
> checks, and also summarize what people propose as changes to them. We can
> then discuss those and eventually vote for the way to go forward.
That will be nice, thanks.
>
>
>>
>>
>>> I'd say interfaces are much more likely to include more useless parameters
>>> than a concrete method definition, which most likely will only include the
>>> arguments it actually needs.
>>>
>>> An example:
>>>
>>> http://www.google.com/**codesearch#HmA4mAI_aLc/src/**
>>> main/java/terrastore/server/**impl/support/**JsonBucketsProvider.java&q=*
>>> *implements%5C%**20MessageBodyWriter&type=cs&l=**36<http://www.google.com/codesearch#HmA4mAI_aLc/src/main/java/terrastore/server/impl/support/JsonBucketsProvider.java&q=implements%5C%20MessageBodyWriter&type=cs&l=36>
>>>
>>> This is the most common scenario for implementations of this interface
>>> (see the other search results).
>>
>>
>>> --
>>> Gustavo Lopes
>>>
>>> --
>>> PHP Internals - PHP Runtime Development Mailing List
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>>
>>>
>>
>>
>> --
>> Etienne Kneuss
>> http://www.colder.ch
>>
>
>
>
> --
> Etienne Kneuss
> http://www.colder.ch
>



-- 
Laruence  Xinchen Hui
http://www.laruence.com/

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

Reply via email to