自定义PHP函数传递参数而不带括号

时间:2017-10-22 06:31:21

标签: php function

我有一个不寻常的问题.. 当我们将参数传递给PHP函数时,我们总是使用圆括号,即:

function myFunction($argument){ 
  return $argument; 
}

我们用

来称呼它
myFunction($argument);

有没有人设法创建一个自定义PHP函数,通过传递参数/参数wihtout大括号,类似于echo ... ie:

myFunction $argument;

1 个答案:

答案 0 :(得分:0)

PHP language specifications中,Function calls部分提及:

  

通过函数调用操作符()调用函数。

Function Call Expression的语法是:

  

函数调用表达式:
  qualified-nameargument-expression-list opt
  callable-expressionargument-expression-list opt

正如您所看到的,函数调用表达式是从函数名称(作为标记的名称或评估它的PHP表达式)后跟开括号((),一个可选的参数列表(以逗号(,)分隔),后跟右括号())。

括号是必需的,它们允许编译器在没有参数的情况下调用函数调用。它们还允许它理解$var()是函数调用而$var不是。

有没有人设法创建一个自定义PHP函数,通过传递参数/参数waihtout大括号,类似于echo

简短的回答是“不,这在PHP中是不可能的”。以上解释了原因。

echo不是函数,is a language constructprintinclude/include_once/require/require_once也是如此。

可以使用echo括号,但事实上,括号不是echo的一部分,它们是由echo打印的表达式的一部分。

以下代码无效:

echo('one', ' ', 'two');

如果echo是一个函数,那将是有效的。

看看这段代码:

echo('one'), ' ', ('two');

这显然是无效的PHP错误代码。如果echo是一个函数,它将无效。但echo不是函数,代码有效。

让我们暂时假设echo是一个函数,语言允许调用带或不带括号的函数。上面的这一行含糊不清。 echo的论点是什么?

编译器是否认为对echo的调用是echo('one')('one')只是括号中的字符串(一个完全有效的表达式),而echo的参数是{ {1}},('one')' '