Re: Annotations Request
| From: | Marcus Boerger | Date: | Wed, 20 Aug 2008 14:46:16 +0000 |
| Subject: | Re: Annotations Request | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-40015@lists.php.net to get a copy of this message | ||
Hello Volodymyr,
Tuesday, August 19, 2008, 3:54:16 PM, you wrote:
> Hi,
> Is there a chance to have annotations like in Java or like .NET attributes?
> Now, I use Java Annotations emulation, through Reflections and PHPDoc
> blocks. Example:
> /** Annotation One*/
> class DemoAnnotation1 extends C01t_Annotation
> {
> public $value;
> }
> /** Annotation Two*/
> class DemoAnnotation2 extends C01t_Annotation
> {
> public $p1;
> public $p2;
> }
> class DemoClass
> {
> const SOME_CONST = 5;
> /** @DemoAnnotation1(DemoClass::SOME_CONST + 1) */
> public $property1;
> /** @DemoAnnotation2(p1 => 1, p2 => 'Hello, Word!') */
> public $property2;
> }
Basically there is no need for annotations in PHP unlike there is in Python
for instance. However, while the following work:
php -r 'class T { const C=42; var $p=T::C; } var_dump(new T);'
php -r 'class T { const C=42; const D=T::C; } var_dump(new T);
the next two do not:
php -r 'class T { const C=42; var $p=T::C + 1; } var_dump(new T);'
php -r 'class T { const C=42; const D=T::C + 1; } var_dump(new T);
So you might want to have full support for evaluated consts/default values.
The reason why we do not support this right now is a limitation in how
consts and default values get initialised.
Best regards,
Marcus