On 16/02/15 14:00, Dmitry Stogov wrote: > We don't have final design yet. just idea(s) and a question - should we try > to do it for PHP7 or later or not at all.
That is awesome. I would vote for a yes and I'd like it out ASAP (I would adapt my own annotation parser to read *also* this annotations). I don't know however how hard it is to get it out on 7.0 but _I'd like_ to have it. Cheers, > > Thanks. Dmitry. > > > > On Mon, Feb 16, 2015 at 3:43 PM, Cesar Rodas <ce...@rodas.me> wrote: > >> On 16/02/15 13:40, Alexander Lisachenko wrote: >>> 2015-02-16 15:31 GMT+03:00 Benjamin Eberlei <kont...@beberlei.de>: >>> >>>> My question is how do i evaluate this at runtime? I suppose a function >> is >>>> necessary like evaluate_ast(...), but that requires passing the >> context. >>>> many many open questions and as nikic points out this should probably be >>>> delayed to 7.1 because it all should be discussed and specified. >>>> >>> This will be like pretty simple to parse: >>> // For scalars: >>> $attributes = (new ReflectionMethod(some::class, >> 'method))->getAttributes(); >>> $cacheableNode = $attributes[Cacheable::class] ?? new >>> Php\Parser\Node(AST_TYPE_VALUE, 50); >>> $cacheTime = $cacheableNode->value; >>> >>> // For more complex things, like expressions or constant, runtime >>> evaluation can be performed. >>> $codeNode = $attributes[Php\Contract\Requires::class] ?? new >>> Php\Parser\Node(AST_TYPE_STATEMENT, '$this->value >=0'); >>> $code = (string) $codeNode; >>> $result = eval($code); >>> >> So, do we have the interpretation/evaluation of the ASP to the userland? >> That could good or bad. >> >> Good: It's pretty flexible >> Bad: Not so as fast as doing it in C. It's not easy to understand how to >> use it (but I'm sure most annotation libraries would do it for you, so >> no that bad). >> >> Am I missing something? >> >> -- >> César D. Rodas >> Open Source developer >> +595-983-161124 >> PGP: F9ED A265 A3AB C8A1 D145 7368 158A 0336 C707 0AA6 >> >> >> -- César D. Rodas Open Source developer +595-983-161124 PGP: F9ED A265 A3AB C8A1 D145 7368 158A 0336 C707 0AA6
signature.asc
Description: OpenPGP digital signature