During the flattening process, is a copy made of the trait code (or bytecode or whatever)?
...
Or is the code shared so the memory use will be roughly the same?
...
I realise the use cases for traits and inheritance are different, and often the situation will dictate the design, but sometimes you have these two options so have to make a design decision, and it would be nice to know the impact on memory use/code size.
...
But the decision to use traits or inheritance should be pretty obvious, and the amount of memory either way uses should be irrelevant. If either choice appears to be allocating too much, then it's the Zend Engine itself that should be looked at, and not rewritting PHP code.
Not necessarily. There are design tradeoffs when implementing traits. It may (or may not) be the case that there is a tradeoff between execution time and memory use. The implementor may have perfectly good reasons for favouring, say, execution time, even though due to my environment I may be more concerned about memory use, and there's no real reason why he should change, and not me. Also from a purely practical viewpoint, rewriting PHP code may be more feasible in the short term. :-) At any rate, Stefan has confirmed that there isn't code duplication behind the scenes, so it's not an issue! Smiles, Ben. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php