#49346 [Opn]: using return() with an empty argument list is causing in a parser error
| From: | mirko dot steiner at slashdevslashnull dot de | Date: | Tue, 25 Aug 2009 12:48:08 +0000 |
| Subject: | #49346 [Opn]: using return() with an empty argument list is causing in a parser error | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-2657@lists.php.net to get a copy of this message | ||
ID: 49346
User updated by: mirko dot steiner at slashdevslashnull dot de
Reported By: mirko dot steiner at slashdevslashnull dot de
Status: Open
Bug Type: Documentation problem
Operating System: linux, freebsd
PHP Version: 5.2.10
New Comment:
first of all, i was wrong. echo (1) is listed under ,,string
functions'' but is documented as a language construct.
I don't want to start a discussion here about ,,what is a function and
what is a language construct'', in my opinion it is just a inconsistence
in the PHP language that the parantheses for return are optional because
it is a language construct.
how ever, for me as a programmer, its easier to handle everything as a
function not to difference between a ,,language construct'' and a
function: functioname (arg1[, arg2] ...)
the parantheses are optional, its for me not a feature, its a
inconsistence, so is the parser error if no argument is given in case i
use a language construct instead of a function.
if it is possible to use parantheses, and i use them, they should have
the expected parantheses behavior.
just my two cents.
(1) http://de3.php.net/manual/en/function.echo.php
(requested Tue Aug
25 14:33:40 CEST 2009)
Previous Comments:
------------------------------------------------------------------------
[2009-08-25 07:14:27] sjoerd@php.net
I agree that the documentation suggests that return() is valid, because
it refers to the return statement as "return()". Maybe "return" without
parenthesis would be better.
Note that echo() is also a language construct and not a function. I
change this bug to category "Documentation", so that the documentation
return and echo can be clarified.
------------------------------------------------------------------------
[2009-08-24 18:59:48] mirko dot steiner at slashdevslashnull dot de
thank you, for your immidiatly response.
yes, i know that ,,return'' is a language construct. it is documented
that the parentheses are not required (1) but not
that it is necessary that there have to be an argument if the
parantheses are used.
using ,,echo()'' for example, which is a function(!), brings the same
parser error when using empty parentheses.
it seems like an error in the parser where functions or ,,language
constructs'' where the parantheses are optional.
(1) http://de2.php.net/manual/en/function.return.php
(requested Mon Aug
24 20:45:38 CEST 2009)
------------------------------------------------------------------------
[2009-08-24 18:08:34] sjoerd@php.net
Thank you for your report.
The behavior you report is not a bug. You call return as if it is a
function. It is not, it is a language construct.
The correct syntax is:
return 'bar';
or
return;
The parenthesis are not needed.
------------------------------------------------------------------------
[2009-08-24 15:20:57] mirko dot steiner at slashdevslashnull dot de
Description:
------------
using return() with an empty argument list is causing in a parser
error.
Reproduce code:
---------------
<?php
function foo($arg) {
if($arg) {
return('bar');
} else {
return();
}
}
?>
Expected result:
----------------
no parser error :-)
Actual result:
--------------
Parse error: syntax error, unexpected ')' in
/usr/local/www/develop/htdocs/test.php on line 6
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=49346&edit=1