Hi,
[...]
> I am playing around with an extension to the Zend Engine 2 to
> allow class properties and methods to be tagged with
> attributes. These attributes would then be accessible through
> the Reflection classes:
The PHP development team is usually against these kinds of OOP syntax sugar
additions, search Google / the archives for:
* Having IException as an interface instead of needing to
extend the builtin Exception class (php-internals)
* Static initializers (pear-dev)
* with() keyword (???)
* Namespaces (php-internals, zendengine2)
* Operator overloading (php-internals)
* throws clause (zendengine2)
* Passing NULL to typehints (php-internals)
* finally (php-internals)
* Return type hints (php-internals)
* self should reflect runtime class (php-internals)
* Automated getters/setters (php-internals)
(this list is by no means complete)
Having said that, how about implementing that in userland?
class Storable {
#[serializer:toString; persistent:true;]
public $date;
}
Extend (or wrap) the reflection classes and add:
MyClass::getAnnotations()
MyMethod::getAnnotations()
MyProperty::getAnnotations()
In those, parse the sourcecode with ext/tokenizer and extract all comments
beginning with the string "#[", push them into a hashmap and return it.
It's not as slow as you might expect. Of course, it'll only work if you
don't use "#[" in any other comments:)
- Timm
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php