On Fri, Apr 17, 2009 at 10:16 AM, Stefan Marr <p...@stefan-marr.de> wrote:
> For the sake of simplicity, we might discuss a very basic solution.
> It would be possible to introduce trait-local state only.
> Thus, all properties defined in a trait are only available within methods of 
> the same trait,
> no other operations are able to access these properties.

Yes, I think this is exactly right. Programmers who want to expose the
state can do that by writing setters and getters. A trivial
inconvenience compared to the pain of not being able to have multiple
enhancements of the same third party class from multiple sources -
something that comes up almost immediately when you start talking
about plug-ins for frameworks.

> How ever, there are also corner cases. (Behavior might be different in case
> of name clashes for dynamically created properties within a composition,
> changing behavior depending on the order of method invocations on a single
> object)

I'm not sure I grasp how these can happen in this scenario.

> Just to be clear, there is no such thing like renaming. Renaming is just not
> possible with a dynamic language like PHP. ($this->$bar = 'baz';
> $this->$foo();... )

OK, but with strictly-trait-local state this is not an issue.

A shame this can't be in 5.3 but we will get there. (:

-- 
Tom Boutell
P'unk Avenue
215 755 1330
punkave.com
window.punkave.com

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

Reply via email to