Hi Jonathan:
Sorry, was not able to get back to those discussions earlier.
On 22 Dec 2010, at 16:39, Jonathan Bond-Caron wrote:
> There are two remaining questions I have:
> 1) How do traits affect the reflection API?
Johannes implemented some features in the Reflection API.
However, they are very ad-hoc, and there are some points which could be
designed differently to make the concepts more clear.
On of those things is that you actually use ReflectionClass to reflect on a
trait.
That is really an implementation detail, and should be changed to not confuse
anyone on a conceptional level. We should not expose that kind of
engine/implementation detail.
Thus, there remains stuff to be done about reflection. In general, I would like
to be able to access all information that was in the source code. However, time
constraints are an issue for me. If there would be a new release date for an
alpha or something, I think I could get some time to work on it...
> 2) Do we want to be able to declare trait requirements for properties and
> methods? If so what syntax?
Well, there was the proposal to use require to express constraints for the
composing class, which is something I liked.
However, I would not go to support properties, too, since I still maintain the
opinion that we do not actually do something about state with regard to traits.
>
> A note on the syntax proposed by Nathan:
> trait require Foo
>
> An option could be:
>
> trait Foo {
> require {
> public $var;
> function ratio();
> }
Hm, well, we already got abstract methods for the methods part.
> trait Bar {
> require interface Iterator;
> }
And expressing the requirement for an interface or an abstract class seems to
be the only thing missing, I think.
However, I would not put that in the body but into the hat.
trait Bar require OneSpecificClass, AndPossiblyAnInterface,
OrPossiblyAnotherInterface {}
>
> The idea comes from:
> http://code.google.com/p/es-lab/wiki/Traits
>
> I found this trying to look for alternative keyword for 'require'.
Yes, Tom worked on that a while ago, but it was to easy to implement it in a
library for JavaScript. To easy to be considered for a language feature...
Best regards
Stefan
--
Stefan Marr
Software Languages Lab
Vrije Universiteit Brussel
Pleinlaan 2 / B-1050 Brussels / Belgium
http://soft.vub.ac.be/~smarr
Phone: +32 2 629 2974
Fax: +32 2 629 3525
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php