Bug #68182 [Com]: array("foo", "bar")() is invalid syntax

From: Date: Wed, 08 Oct 2014 14:54:08 +0000
Subject: Bug #68182 [Com]: array("foo", "bar")() is invalid syntax
References: 1  Groups: php.standards 
Request: Send a blank email to standards-+get-500@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=68182&edit=1 ID: 68182 Comment by: cmbecker69 at gmx dot de Reported by: chx@php.net Summary: array("foo", "bar")() is invalid syntax Status: Not a bug Type: Bug Package: PHP Language Specification PHP Version: Irrelevant Block user comment: N Private report: N New Comment: > According to the specs, any postfix expression + argument list > is a valid function call. No. While it is syntatically valid, there are further constraints: | postfix-expression must designate a function, either by being | its name, by being a value of type string (but not a string | literal) that contains the function's name, or by being a variable | whose type is Closure (§§) or a derived type thereof. array("foo", "bar") doesn't fulfill these constraints. Previous Comments: ------------------------------------------------------------------------ [2014-10-08 08:06:06] requinix@php.net Actually it is valid syntax but you need the uniform variable syntax changes in PHP 7 to get it. http://3v4l.org/TbcgJ ------------------------------------------------------------------------ [2014-10-08 07:47:11] chx@php.net Description: ------------ According to the specs, https://github.com/php/php-langspec/blob/master/spec/10-expressions.md#function-call-operator any postfix expression + argument list is a valid function call. Looking at postfix expressions https://github.com/php/php-langspec/blob/master/spec/10-expressions.md#general-3 it says array-creation-expression is a postfix expression. Test script: --------------- array("foo", "bar")(); Expected result: ---------------- PHP Fatal error: Class 'foo' not found in Command line code on line 1 Actual result: -------------- PHP Parse error: syntax error, unexpected '(' in Command line code on line 1 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=68182&edit=1

« previous php.standards (#500) next »