com php-langspec: Multiple constants can be defined at once: spec/14-classes.md spec/19-grammar.md
[email protected] (Nikita Popov) Mon, 11 Jul 2016 18:32:38 +0000
| Newsgroups | php.standards.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: 2ab435e7445d212aeee66f3d7e0d9708980e8faf Author: Nikita Popov <[email protected]> Mon, 11 Jul 2016 20:32:38 +0200 Parents: 19e44137fe0bb8cde8f52a9780524e6eec916164 Branches: master Link: http://git.php.net/?p=php-langspec.git;a=commitdiff;h=2ab435e7445d212aeee66f3d7e0d9708980e8faf Log: Multiple constants can be defined at once Changed paths: M spec/14-classes.md M spec/19-grammar.md Diff: diff --git a/spec/14-classes.md b/spec/14-classes.md index 443b713..281a85a 100644 --- a/spec/14-classes.md +++ b/spec/14-classes.md @@ -386,10 +386,17 @@ Widget::__callStatic('sMethod', array(NULL, 1.234)) <pre> <i>const-declaration:</i> - const <i>name</i> = <i>constant-expression</i> ; + const <i>const-elements</i> ; <i>class-const-declaration:</i> - <i>visibility-modifier<sub>opt</sub></i> const <i>name</i> = <i>constant-expression</i> ; + <i>visibility-modifier<sub>opt</sub></i> const <i>const-elements</i> ; + + <i>const-elements:</i> + <i>const-element</i> + <i>const-elements const-element</i> + + <i>const-element:</i> + <i>name</i> = <i>constant-expression</i> </pre> **Defined elsewhere** @@ -403,8 +410,8 @@ Widget::__callStatic('sMethod', array(NULL, 1.234)) A *const-declaration* must only appear at the top level of a script, and must not redefine an existing [c-constant](06-constants.md#general). -A *class-const-declaration* must be inside a [*class-definition*](#class-members) or be an -[*interface constant*](15-interfaces.md#interface-members). +A *class-const-declaration* must be inside a [*class-declaration*](#class-members) or +[*interface-declaration*](15-interfaces.md#interface-members). A class constant must not have a `static` specifier. @@ -413,6 +420,7 @@ A class constant must not have a `static` specifier. A *const-declaration* defines a c-constant. If *visibility-modifier* for a class constant is omitted, `public` is assumed. +The *visibility-modifier* applies to all constants defined in the *const-elements* list. All constants are implicitly `static`. diff --git a/spec/19-grammar.md b/spec/19-grammar.md index b4d4d9e..3010829 100644 --- a/spec/19-grammar.md +++ b/spec/19-grammar.md @@ -1105,10 +1105,17 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md# <i>trait-use-clause</i> <i>const-declaration:</i> - const <i>name</i> = <i>constant-expression</i> ; + const <i>const-elements</i> ; <i>class-const-declaration:</i> - <i>visibility-modifier<sub>opt</sub></i> const <i>name</i> = <i>constant-expression</i> ; + <i>visibility-modifier<sub>opt</sub></i> const <i>const-elements</i> ; + + <i>const-elements:</i> + <i>const-element</i> + <i>const-elements const-element</i> + + <i>const-element:</i> + <i>name</i> = <i>constant-expression</i> <i>property-declaration:</i> <i>property-modifier variable-name property-initializer<sub>opt</sub></i> ;