Marcus Boerger wrote:
> Hello Lukas,
>
> alright,
>
> 'foo as bar' is ok to me and does not even add a new keyword.
> Ignore or any more keywords are bad and I also think that the correct
> would be hide(ing). But as I further more explained it should really be
> something that only marks a method as private if at all. That can be
> done as:
> 'foo as private' since private is a keyword it cannot conflice anyway.
I like this solution.
I have been uncomfortable with the current trait suggestions because
they occur in the body of the class, whereas extends/implements is
outside. I think there is a way to handle this, however.
class Blah extends ... implements ... traits trait1, trait2, trait3 {
}
The above presents a problem if trait2 contains conflicting method
names, but a simple way to solve it would be to automatically alias
methods by prepending traitname::
<?php
trait trait1 { function a(){}}
trait trait2 { function a(){}}
class Blah extends ... implements ... traits trait1, trait2, trait3 {
}
?>
would create method "trait2::a" and we can alias it in the class body.
Also, $a->{'trait2::a'}(); is legal syntax, so no problems there.
Example:
<?php
trait trait1 { function a(){}}
trait trait2 { function a(){}}
class Blah extends ... implements ... traits trait1, trait2, trait3 {
function trait2::a as b;
}
?>
This would be 100% obvious to me, and far clearer for reading since we
would be explicitly saying we're aliasing a function.
So, I rescind my previous syntax suggestion in favor of the above.
Greg
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php