Stefan Marr wrote:
On 25 Mar 2010, at 21:30, Stefan Marr wrote:
On 25 Mar 2010, at 16:37, Lukas Kahwe Smith wrote:
Hi,

this was just brought up on IRC. my understanding is that traits have no 
concept of properties, but grafts do (all hidden internally). correct?
Right, the Traits proposal as it is at the moment, avoids the explicit 
discussion of state.
This is not a restriction per se, but could limit the composability of traits.

To ensure composibility, you would have to resort to abstract methods which are 
implemented by the composing class.
Maybe I should clarify that.

Currently the semantics is implicitly the following:

class Base{
 var $a;
}

trait T1 {
 var $a;
 var $b;
}

trait T2 {
 var $a;
 var $c;
}

class Composite extends Base {
 use T1, T2;
}

and Composite would have the instance variables $a, $b, $c.
The problem would be of course that Base, T1, and T2 could use $a for 
completely different things.

Simple, but at the cost of composability/safety.
But for most practical cases that should be 'good enough'. As already 
mentioned, if you want stronger guarantees, state accessor methods can be used.

However, I think this implication is not discussed in the RFC, and works just 
because PHP can create the fields dynamically. Thus, I used 'var' here in the 
example, instead of defining a semantics and handling for public, private, 
protected.

Best regards
Stefan
Variable has been discuss in *http://tinyurl.com/y9t7nd9

--Mathieu Suen
*

        


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

Reply via email to