2010/12/16 Stefan Marr <p...@stefan-marr.de>:
> Hi:
>
> From my point of view the right thing to do with regard to properties is 
> defined in the test cases below.
>
> The rational behind providing this semantics is based on the fact that PHP 
> allows to define properties dynamically anyway, so there is no way around 
> properties.
> However, there should be a way that a developer can notice that the code 
> might not behave as expected in the composed class.
>
> It is true that behavior needs state to operate on, however, accessors are a 
> common pattern and fully supported by traits. Furthermore, traits are not 
> supposed to replace classes, and when a trait does more than just providing 
> code that is to be easily reused, then the designed should ask the question 
> whether that is not actually a class, which then provides the necessary 
> guarantees to enforce the invariances the code expects.
>
> Thus, I would like to keep traits as a lightweight concept for code reuse.
>
> Best regards
> Stefan
>
> --TEST--
> Conflicting properties should result in a notice.
> Property use is discorage for traits that are supposed to enable maintainable
> code reuse. Accessor methods are the language supported idiom for this.
> --FILE--
> <?php
> error_reporting(E_ALL);
>
> trait THello1 {
>  public $foo;
> }
>
> trait THello2 {
>  private $foo;
> }
>
> class TraitsTest {
>        use THello1;
>        use THello2;
> }
>
> var_dump(property_exists('TraitsTest', 'foo'));
> ?>
> --EXPECTF--
> Notice: Trait THello1 and THello2 define the same property in the composition 
> of TraitsTest. This might be incompatible, to improve maintainability 
> consider using accessor methods instead. Class was composed in %s on line %d.

In this test, you might want to display some text before the
var_dump() (or alternatively to hardcode the line number on last line)
to ensure it is the property_exists() function call or the class
definition which would create such a notice.

Regards,
Patrick

-- 
Patrick Allaert
---
http://code.google.com/p/peclapm/ - Alternative PHP Monitor

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

Reply via email to