W liście Marcus Boerger z dnia środa, 20 sierpnia 2008: > Hello Volodymyr,
> 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. I don't really get your point. Annotations are not about constant values, but about adding arbitrary attributes to classes and methods/functions. A simple use case (in pseudocode): class MyController extends BaseController { // www.example.com/index @allow('any') @method('get') public function index() { } // www.example.com/comment @allow('any') @method('post') public function comment() { } // www.example.com/admin @allow('admin') @method('get') public function admin() { } } class BaseController { public function _execute() { $action = $this->parseTheUrl(); $method = new ReflectionMethod($this, $action); if ($method->annotations('method') != $_SERVER['REQUEST_METHOD']) { return $this->methodNotAllowed(); } elseif (! $this->currentUser->hasPrivilege($method->annotations('allow')) { return $this->forbidden(); } else { return $this->$action(); } } } Python does not need annotations, as functions can have arbitrary attribute set: def a(): pass a.x = 5 It also has very powerful mechanism of decorators, which are basically higher-order functions applied to functions on their definition, but I don't think Volodymyr asks for so much. -- Paweł Stradomski -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php