On Mon, Feb 16, 2015 at 10:02 PM, Dmitry Stogov <dmi...@zend.com> wrote:

>
>
> On Mon, Feb 16, 2015 at 11:05 PM, Benjamin Eberlei <kont...@beberlei.de>
> wrote:
>
>>
>>
>> On Mon, Feb 16, 2015 at 12:07 PM, Dmitry Stogov <dmi...@zend.com> wrote:
>>
>>> hi,
>>>
>>> During discussion of different ways of implementing "Design by Contract"
>>> we
>>> got an idea of using annotations.
>>>
>>> BTW: annotations are useful by their own and may be used for different
>>> purposes. Support for annotations was proposed long time ago:
>>>
>>> https://wiki.php.net/rfc/annotations
>>> https://wiki.php.net/rfc/annotations-in-docblock
>>> https://wiki.php.net/rfc/reflection_doccomment_annotations
>>>
>>> HHVM already implemented similar concept
>>>
>>> http://docs.hhvm.com/manual/en/hack.attributes.php
>>>
>>> I made a quick and dirty PoC that shows how we may implement annotations
>>> in
>>> PHP7 and how powerful they may be :
>>> https://gist.github.com/dstogov/dbf2a8f46e43719bd2c2
>>
>>
>> How about not exposing the AST, and then the userland can pass context to
>> a method $reflection->getAnnotation($name, $context);
>>
>> https://gist.github.com/beberlei/0dc36d4412b8e3454912
>>
>> That way AST is not exposed to userland.
>>
>
> Your example handles just particular use-case.
> I would like to provide a general solution.
>
> Thanks. Dmitry.
>

Could you provide some more info on how you would imagine this to be used
for the DbC use case? As far as I see, this would require injecting code
into the method body based on the annotations. Does that mean that
annotations handlers will get the chance to modify the AST of the method
itself during compilation? Or how is this supposed to be realized?

Nikita

Reply via email to