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