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


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to