Hi Dimitry, Francois and Guilherme,

On Thu, Feb 5, 2015 at 8:14 PM, Dmitry Stogov <dmi...@zend.com> wrote:

> Hi Yasuo,
>
> Following our conversation, I tried to imagine how DbC should look like in
> PHP from user perspective. Finally, I was influenced by the semantic
> proposed in D, and syntax proposed for Java. So, these are my initial
> thoughts:
>
> For php it may look like the following:
>
> function foo()
>     requre(<input-assert-expression>)
>     ensure(<output-assert-expression>)
> {
>   ...
> }
>
> It would require only one new reserved word "ensure".
>

Should I add D like version to the RFC? I don't care much about syntax as
long as
we have DbC.

https://wiki.php.net/rfc/dbc

Like Guilherme suggested, make some decisions first?


1- Doc comments vs. outside?

2- Keep object instance creation the same? IE: @Foo vs new Foo()

3- Is constructor the only way to inject parameters?

4- What if we have optional arguments, like: @Foo("bar", null, null, "woo")?
Suppose that you wanna fix the optional arguments by declaring names (like
this: @Foo("bar", test="woo")), doesn't it collide with PHP interests of
not supporting parametrized arguments? How would parameter skipping
proposal address this in a nicer way?

5- How would you deal with inheritance? Should a method inherit the same
annotations from parent or not?
Should we add ability to flag to inherit or not? What about overrides?
Would they be allowed? Is there a vague idea on how this concept could be
achieved?

6- Would you be possible to change annotations value at runtime?

7- Would we validate annotation arguments at all? Consider as array?
Properties of objects?

8- In case we take the approach of properties of objects... how would we
flag that a given class can/cannot be used as annotation: another
annotation, interface, any other idea?

9- Would we and/or wow would we flag that a given class could be used only
in a class and not in a method?

10- How would it be the syntax to declare a new annotation?


Since people's preferences are diverse. It might be a good idea having
pre-vote
for designs, then we may have final vote with single design.

We need some consensuses even for pre-vote.

What do you think?


Guilherme, is this the RFC you've mentioned?
>Whenever you feel ready to get true, complete Annotations into core

https://wiki.php.net/rfc/annotations

Just making sure.

Regards,

--
Yasuo Ohgaki
yohg...@ohgaki.net

Reply via email to