Hi Marcus,

Am Mittwoch, den 20.02.2008, 20:59 +0100 schrieb Marcus Boerger:
[...]
>   so at th eend of the day users will get renaming and will abuse it.

I disagree here. I think aliasing is fundamental to traits. If we think
of traits as buckets of functionality, the concrete structure of the
trait does not really matter. What matters is how the trait is used in
the consuming class. Part of the usage is how the trait methods are
exposed to the class. So I would really like to see aliasing support as
long as there are no technical limitations that forbid proper and simple
and understandable aliasing.

> That said I am wondering if at the beginning we might want to do Traits
> without aliasing and dropping. If we feel it gets necessary we probbaly
> might want to support a syntax like:
>   'trait_method' => false
>   'trait_method' => 'new_name'
>   'trait_method' => array('new_name', 'trait_method'

I have another syntax proposal:
class Foo {
   consume TFoo {
      methodName as newMethodName;
      ignore otherMethod;
   }
}

"foo as bar" seems easy to grasp for me. Ignore seems to be technically
correct, as the method is not dropped or removed but just ignored for
the current class context. I would really prefer not to use "exhibit" or
"possess". Most OOP terms are really basic english to make also
non-english speakers get the concepts easily. "abstract", "class",
"object", "interface", etc. pp. is pretty basic, while "exhibit" or
"possess" is maybe not part of the common basic vocabulary.

cu, Las

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

Reply via email to