On Wed, Oct 21, 2015 at 12:31:58PM -0500, Aaron Piotrowski wrote:
> Hi Sean,
>
> > On Oct 21, 2015, at 11:17 AM, Sean DuBois <s...@siobud.com> wrote:
> >
> > On Wed, Oct 21, 2015 at 03:54:48PM +0000, Dan Ackroyd wrote:
> >> Hi Sean, internals,
> >>
> >> While I support this RFC, it seems that the actual implementation is
> >> still under discussion.
> >>
> >> In particular, whether the RFC is going to allow protected constants
> >> in an interface is not clear.
> >>
> >> In the text of the RFC, on one line it says: "This RFC propose PHP
> >> support class constant visibility that mirror the behaviour of method
> >> and property visibility." This would imply that protected constants
> >> are not allowed, as protected methods are not allowed in interfaces.
> >>
> >> Just below it says: "//Interfaces only support protected/public const,
> >> and a compile time error will be throw for privates" Which says
> >> clearly that protected constants _would_ be allowed.
> >>
> >> Please can you update the text of the RFC?
> >>
> >> Unfortunately, that may need a restart of the voting :-\ However that
> >> should just be a formality as it seems to be a popular RFC.
> >>
> >> cheers
> >> Dan
> >>
> >> --
> > Hi!
> >
> > That is an unfortunate mistake on my part. The *proper* way to adjust
> > visibility of a trait from a class constant is the following.
> >
> >    trait myTrait {
> >        public const FOO = 'bar'
> >    }
> >
> >    class myClass {
> >        use myTrait { FOO as protected; }
> >    }
> >
> >    class myClass {
> >        use myTrait { FOO as private; }
> >    }
> >
> > We should not allow anything besides public in trait, this mirrors the 
> > design of methods.
> >
> > If this is right (mind just sending an ACK to make sure I got it right this 
> > time) I
> > will update the RFC. Who decides if/when we should restart voting?
> >
> > thanks
> >
> > --
> > PHP Internals - PHP Runtime Development Mailing List
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
>
> I think you may have misunderstood. Traits should be able to have protected 
> and private constants. The issue that Dan pointed out is with an interface 
> having a protected constant in the example code, contradicting what was 
> written prior in the RFC about mirroring the current behavior of method and 
> property visibility.
>
> Interfaces should only be allowed to have public constants. Protected 
> constants would infer that the interface knows something about 
> implementation, which doesn’t make sense for an interface. I think the RFC 
> should be updated to remove this ambiguity.
>
> I’m not sure if this would require the vote to be restarted, as I doubt 
> anyone who voted yes would now vote no with this change.
>
> Regards,
> Aaron Piotrowski
>
>
Argh I am rushing, again my mistake.

I just updated the RFC to reflect this, sorry about the confusion
everyone! The intent of the RFC is to just copy existing patterns from
methods/properties so as non-controversial as possible.

For now I am not going to restart the vote, if anyone feels
this decision is wrong I am more than happy to restart the vote.
However, don't want to inconvenience the people who have already taken
time to vote.

thanks!

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

Reply via email to