Req #74362 [Wfx]: Make echo and print equivalent
| From: | pollita@php.net | Date: | Mon, 03 Apr 2017 03:55:07 +0000 |
| Subject: | Req #74362 [Wfx]: Make echo and print equivalent | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-208290@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=74362&edit=1
ID: 74362
Updated by: pollita@php.net
Reported by: olafvdspek at gmail dot com
Summary: Make echo and print equivalent
Status: Wont fix
Type: Feature/Change Request
Package: Scripting Engine problem
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
Oh, and because I missed bwoebi@'s comment... That's exactly the kind of edge case I
included "[citation needed]" in my reply for. :)
Taht said, we could resolve that ambiguity by requiring parenthesis for print with multiple args,
but at that point you have an exeption to the grammar rule, and you're not longer bringing
echo/orint in line with each other and any consistency benefit flies away.
Previous Comments:
------------------------------------------------------------------------
[2017-04-03 03:52:36] pollita@php.net
True about the difference being slightly larger, but as far as the original question goes: Yes, we
could allow print to accept multiple arguments.
For that matter we could make echo return a value. Neither is going to break anything[citation
needed], and due to the way the compiler handles both statements, neither will perform worse (fun
fact: the compiler turn both into ZEND_ECHO opcodes, just with a different extended_value which it
doesn't even use).
Should we? It'd be a grammar change, so you'll need an RFC and a 2/3 vote in favor of it.
Without a compelling reason, I doubt you'll get that.
------------------------------------------------------------------------
[2017-04-02 15:33:01] bwoebi@php.net
Small example:
foo(print 1, 2);
^ is 2 a second argument to print or to foo?
That's ambiguous, hence we do not allow that.
------------------------------------------------------------------------
[2017-04-02 13:22:05] olafvdspek at gmail dot com
> That's not the only difference,
OK, so the documentation is wrong too?
@dm: sure, but that doesn't mean print couldn't support multiple arguments does it?
------------------------------------------------------------------------
[2017-04-02 13:03:11] dm@php.net
print has a return value along with outputting and can be used as e.g. return
print json_encode(...); while echo can not.
------------------------------------------------------------------------
[2017-04-02 12:45:54] kelunik@php.net
That's not the only difference, the return types also vary. "echo" is
"void" while "print" returns "int".
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=74362
--
Edit this bug report at https://bugs.php.net/bug.php?id=74362&edit=1