|
Posted by Jochem Maas on 01/20/05 21:58
Richard Lynch wrote:
> Sergio Gorelyshev wrote:
>
>>Hi all.
>>
>>Situation:
>>
>>interface MyInterface {
>> public static myMethod();
>>}
>>
>>class MyClass implements MyInterface {
>> public static myMethod() {}
>>}
>>
>>This sample will crash with message
>>Fatal error: Access type for interface method MyInterface::myMethod() must
>>be omitted in somefile.php on line NN
>>
>>Why I'm not able to clarify call's type (static) for methods in interface?
>>I'm predict closely that method myMethod() in all classes which implements
>> MyInterface must be called statically. A little trick allowed to me to
>>resolve this problem, but my question more ideological than practical.
>
>
> As I understand it, an 'interface' is, by definition, never gonna have an
> actualy object instantiated.
true but thats not the reason - the reason is because an interface is a
PUBLIC contract which a class adheres to.
>
> Thus, there can never *BE* an object for which private/public/protected
> have any meaning.
private/public/protected have meaning for static/abstract classes.
>
> You can only use the private/public/protected on the 'class' definitions.
I think that should be 'in' iso 'on'
>
> Even if you *KNOW* that all class definitions *should* for this to be
> 'public' it just doesn't make sense from the strictly technical
> stand-point of what an 'interface' is to declare it there.
>
> Maybe somewhere over on php-dev you could make the case for the PHP Dev
> Team to implement something good/interesting when public/protected/private
> is used there, but currently it's semanticly undefined to have it there,
> so it can't be there.
>
> Disclaimer: I could easily be 100% wrong in this entire post. :-)
>
[Back to original message]
|