Re: [VOTE] Shorter Attribute Syntax Change
| From: | Andreas Leathley | Date: | Mon, 10 Aug 2020 16:27:55 +0000 |
| Subject: | Re: [VOTE] Shorter Attribute Syntax Change | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-111444@lists.php.net to get a copy of this message | ||
On 10.08.20 17:40, Derick Rethans wrote:
It missing an ending delimiter was my first reason for wanting to get something better than @@. I don't particularly care much if it ends up being @[], #[], <<>>, or other things such as @:( ). If you have something to open, and close, there there is a distinct area that forms the whole definition of a thing. That's why functions, and classes have { and }, if and other control structures have ( .. ), etc. Being able to define a whole "thing" easily with an open and closing set of symbols, allows for better mental parsing. It also means that syntax highlighting tools can map the opening part with the closing part. (VIM for example, uses the % character to jump between opening and closing symbol).For me the difference would be that with attributes, you are not opening and closing many possible statements, it can only be one (or more, with grouping) class name(s), which then can have arguments, but those are enclosed with (). In comparison, classes can have many possible definitions inside of them (class variables, methods, constants, etc.), so enclosing them clearly makes sense, as you need to know where it ends. The same goes for if, for, while, etc. So if you just have one class name as an attribute, enclosing it seems a bit overkill, as there is already a definition of a class name and how it starts and ends, which is why for me the mental parsing does not seem easier - but what is easily parseable probably depends on many factors and might be different for different people. I would have found a syntax where the delimiters are optional preferable - similar to "if", where you can leave off the {} for exactly one instruction, but you have to add them if there is more than one line of instructions. Or the group use syntax.