On 22/07/2020 13:00, Derick Rethans wrote:
- There are lots of grumbles, both on here, room 11, as well as in the
   wider community (https://www.reddit.com/r/PHP/comments/hjpu79/it_is/)

From discussions in R11 I want to offer the following example of why either option with a closing tag is preferable to allow maximum flexibility in future development.

Assume we want to extend attributes to include something a lot of PHP features have, an access scope, to only allow accessing annotations from within the class itself, or a descendant.

Then we end up with something like :

class Foo {
  @@protected Attr protected int $bar;
}

Contrast that to something with opening and closing tags where they are clearly grouped:

class Foo {
  #[protected Attr] protected int $bar;
}



What other syntax might we want to add? Perhaps we want to add a way to enforce validation at encounter time with a "checked" keyword.

@@checked protected Attr(1,2,3) protected int $bar

#[checked protected Attr(1,2,3)] protected int $bar

It's much less ambiguous what belongs to what.



Now we could dig ourselves out of this hole using additional tokens around @@ such as @@(checked protected Attr) but at which point why not just use a mechanism that supports it out of the box?

Mark Randall

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to