Hi Benjamin, On Tue, June 9, 2020 at 6:55 AM Benjamin Eberlei wrote:
> Larry's suggestion about `#[Attr]` makes an important argument about > allowing to declare attributes in code in PHP 7 in a forward compatible > way that has not been brought up before. > > ```php > /** @ORM\Entity */ > #[ORM\Entity] > class User {} > ``` > > This code would work on PHP 7 and 8. That's an interesting argument. After thinking about it more, though, I'm not sure I understand what the benefit would be. The docblock annotation needed for PHP 7 is *already* forward compatible with PHP 8. So wouldn't this just be duplicating the attribute and opening the possibility for them to be out of sync for no benefit? Rather than duplicating attributes, wouldn't libraries simply stick with docblock annotations until they need to depend on other PHP 8 features anyway (e.g. union types), and then switch completely to the native attribute syntax? Furthermore, even if there was some benefit to having an attribute in both docblock and native syntaxes, it seems like this is a very short term concern. In a few years once libraries are depending on other PHP 8 features, will this even matter anymore? So I'm really not convinced that this forward compatibility argument should influence the syntax choice. > The `#[]` syntax would have about equally low breaking potential as `@@`. Is this really the case? There's no benefit to adding extra suppression operators, but I have seen code in the wild using hash comments starting with an opening bracket (e.g. to comment out an array, or for making checkboxes like `#[x] Some comment here`). > As such, instead of going through each alternative syntax one by one, > with with each having a 2/3 requirement to overthrow the old one, > I would be open to restart the secondary vote on Attributes syntax > with `<<>>` (status quo), `@@` and `#[]` using the same ranked voting > algorithm that was used for the PHP 8 RM vote. I'm certainly open to holding a three-way ranked choice vote like this, if others are okay with it. > I would take on the work to write about the third syntax alternative > then. The VoteRFC could just link to the three individual RFCs where > each discusses their syntax. I added a section to the Shorter Attribute Syntax RFC discussing the pros and cons of the `#[]` syntax. Let me know if you feel it isn't worded fairly. I think it would be preferable to have the syntax choices and voting options presented in one document rather than spread out in different places if possible. Best regards, Theodore -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php