我有一个不寻常的问题.. 当我们将参数传递给PHP函数时,我们总是使用圆括号,即:
function myFunction($argument){
return $argument;
}
我们用
来称呼它myFunction($argument);
有没有人设法创建一个自定义PHP函数,通过传递参数/参数wihtout大括号,类似于echo ... ie:
myFunction $argument;
答案 0 :(得分:0)
在PHP language specifications中,Function calls部分提及:
通过函数调用操作符()调用函数。
函数调用表达式:
qualified-name(argument-expression-list opt )
callable-expression(argument-expression-list opt )
正如您所看到的,函数调用表达式是从函数名称(作为标记的名称或评估它的PHP表达式)后跟开括号((
),一个可选的参数列表(以逗号(,
)分隔),后跟右括号()
)。
括号是必需的,它们允许编译器在没有参数的情况下调用函数调用。它们还允许它理解$var()
是函数调用而$var
不是。
echo
?简短的回答是“不,这在PHP中是不可能的”。以上解释了原因。
echo
不是函数,is a language construct。 print
,include
/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')
和' '
?