mirror of
https://github.com/php/php-langspec.git
synced 2026-03-24 07:12:08 +01:00
Fix print precedence
This commit is contained in:
@@ -322,7 +322,6 @@ intrinsic:
|
||||
eval-intrinsic
|
||||
exit-intrinsic
|
||||
isset-intrinsic
|
||||
print-intrinsic
|
||||
-->
|
||||
|
||||
<pre>
|
||||
@@ -331,7 +330,6 @@ intrinsic:
|
||||
<i><a href="#grammar-eval-intrinsic">eval-intrinsic</a></i>
|
||||
<i><a href="#grammar-exit-intrinsic">exit-intrinsic</a></i>
|
||||
<i><a href="#grammar-isset-intrinsic">isset-intrinsic</a></i>
|
||||
<i><a href="#grammar-print-intrinsic">print-intrinsic</a></i>
|
||||
</pre>
|
||||
|
||||
**Semantics**
|
||||
@@ -521,48 +519,6 @@ $v1 = TRUE; $v2 = 12.3; $v3 = NULL;
|
||||
isset($v1, $v2, $v3); // results in FALSE
|
||||
```
|
||||
|
||||
#### print
|
||||
|
||||
**Syntax**
|
||||
|
||||
<!-- GRAMMAR
|
||||
print-intrinsic:
|
||||
'print' expression
|
||||
-->
|
||||
|
||||
<pre>
|
||||
<i id="grammar-print-intrinsic">print-intrinsic:</i>
|
||||
print <i><a href="#grammar-expression">expression</a></i>
|
||||
</pre>
|
||||
|
||||
**Constraints**
|
||||
|
||||
*expression* value must be [convertable to a string](08-conversions.md#converting-to-string-type).
|
||||
In particular, it should not be an array and if it is an object, it must implement
|
||||
a [`__toString` method](14-classes.md#method-__tostring).
|
||||
|
||||
**Semantics**
|
||||
|
||||
After converting its *expression*'s value to a string, if necessary,
|
||||
`print` writes the resulting string to [`STDOUT`](06-constants.md#core-predefined-constants).
|
||||
Unlike [`echo`](11-statements.md#the-echo-statement), `print` can be used in any context
|
||||
allowing an expression. It always returns the value 1.
|
||||
|
||||
See also: [double quoted strings](09-lexical-structure.md#double-quoted-string-literals) and
|
||||
[heredoc documents](09-lexical-structure.md#heredoc-string-literals), [conversion to string](08-conversions.md#converting-to-string-type).
|
||||
|
||||
**Examples**
|
||||
|
||||
```PHP
|
||||
$v1 = TRUE;
|
||||
$v2 = 123;
|
||||
print '>>' . $v1 . '|' . $v2 . "<<\n"; // outputs ">>1|123<<"
|
||||
print ('>>' . $v1 . '|' . $v2 . "<<\n"); // outputs ">>1|123<<"
|
||||
$v3 = "qqq{$v2}zzz";
|
||||
print "$v3\n"; // outputs "qqq123zzz"
|
||||
$a > $b ? print "..." : print "...";
|
||||
```
|
||||
|
||||
### Anonymous Function Creation
|
||||
|
||||
**Syntax**
|
||||
@@ -3219,6 +3175,50 @@ foreach ($g as $yielded) {
|
||||
}
|
||||
```
|
||||
|
||||
## Print expression
|
||||
|
||||
**Syntax**
|
||||
|
||||
<!-- GRAMMAR
|
||||
print-expression:
|
||||
yield-expression
|
||||
'print' print-expression
|
||||
-->
|
||||
|
||||
<pre>
|
||||
<i id="grammar-print-expression">print-expression:</i>
|
||||
<i><a href="#grammar-yield-expression">yield-expression</a></i>
|
||||
print <i><a href="#grammar-print-expression">print-expression</a></i>
|
||||
</pre>
|
||||
|
||||
**Constraints**
|
||||
|
||||
*print-expression* value must be [convertable to a string](08-conversions.md#converting-to-string-type).
|
||||
In particular, it should not be an array and if it is an object, it must implement
|
||||
a [`__toString` method](14-classes.md#method-__tostring).
|
||||
|
||||
**Semantics**
|
||||
|
||||
After converting *print-expression*'s value into a string, if necessary,
|
||||
`print` writes the resulting string to [`STDOUT`](06-constants.md#core-predefined-constants).
|
||||
Unlike [`echo`](11-statements.md#the-echo-statement), `print` can be used in any context
|
||||
allowing an expression. It always returns the value 1.
|
||||
|
||||
See also: [double quoted strings](09-lexical-structure.md#double-quoted-string-literals) and
|
||||
[heredoc documents](09-lexical-structure.md#heredoc-string-literals), [conversion to string](08-conversions.md#converting-to-string-type).
|
||||
|
||||
**Examples**
|
||||
|
||||
```PHP
|
||||
$v1 = TRUE;
|
||||
$v2 = 123;
|
||||
print '>>' . $v1 . '|' . $v2 . "<<\n"; // outputs ">>1|123<<"
|
||||
print ('>>' . $v1 . '|' . $v2 . "<<\n"); // outputs ">>1|123<<"
|
||||
$v3 = "qqq{$v2}zzz";
|
||||
print "$v3\n"; // outputs "qqq123zzz"
|
||||
$a > $b ? print "..." : print "...";
|
||||
```
|
||||
|
||||
## Logical AND Operator (form 2)
|
||||
|
||||
**Syntax**
|
||||
|
||||
@@ -389,7 +389,6 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
|
||||
<i><a href="#grammar-eval-intrinsic">eval-intrinsic</a></i>
|
||||
<i><a href="#grammar-exit-intrinsic">exit-intrinsic</a></i>
|
||||
<i><a href="#grammar-isset-intrinsic">isset-intrinsic</a></i>
|
||||
<i><a href="#grammar-print-intrinsic">print-intrinsic</a></i>
|
||||
|
||||
<i id="grammar-empty-intrinsic">empty-intrinsic:</i>
|
||||
empty ( <i><a href="#grammar-expression">expression</a></i> )
|
||||
@@ -410,9 +409,6 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
|
||||
<i><a href="#grammar-variable">variable</a></i>
|
||||
<i><a href="#grammar-variable-list">variable-list</a></i> , <i><a href="#grammar-variable">variable</a></i>
|
||||
|
||||
<i id="grammar-print-intrinsic">print-intrinsic:</i>
|
||||
print <i><a href="#grammar-expression">expression</a></i>
|
||||
|
||||
<i id="grammar-anonymous-function-creation-expression">anonymous-function-creation-expression:</i>
|
||||
static<sub>opt</sub> function &<sub>opt</sub> ( <i><a href="#grammar-parameter-declaration-list">parameter-declaration-list</a></i><sub>opt</sub> ) <i><a href="#grammar-anonymous-function-use-clause">anonymous-function-use-clause</a></i><sub>opt</sub> <i><a href="#grammar-return-type">return-type</a></i><sub>opt</sub> <i><a href="#grammar-compound-statement">compound-statement</a></i>
|
||||
|
||||
@@ -681,6 +677,10 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
|
||||
yield <i><a href="#grammar-yield-expression">yield-expression</a></i>
|
||||
yield <i><a href="#grammar-yield-from-expression">yield-from-expression</a></i> => <i><a href="#grammar-yield-expression">yield-expression</a></i>
|
||||
|
||||
<i id="grammar-print-expression">print-expression:</i>
|
||||
<i><a href="#grammar-yield-expression">yield-expression</a></i>
|
||||
print <i><a href="#grammar-print-expression">print-expression</a></i>
|
||||
|
||||
<i id="grammar-logical-AND-expression-2">logical-AND-expression-2:</i>
|
||||
<i><a href="#grammar-yield-expression">yield-expression</a></i>
|
||||
<i><a href="#grammar-logical-AND-expression-2">logical-AND-expression-2</a></i> and <i><a href="#grammar-yield-expression">yield-expression</a></i>
|
||||
|
||||
Reference in New Issue
Block a user