2012-03-17 74 views
1

因为echo不是函数,所以在调用它时不使用括号。php echo不需要括号

例如:

echo "hello"; 

,而不是

echo ("hello"); 

如果它是一个函数,它会一直被迫被称为echo ("hello");

在ASP/VBScript中,我可以通过以下方式之一调用函数;

call dosomething("x","y","z") 

dosomething "x","y","z" notice the missing parathesis 

我在PHP中看到的这个无括号的语法中最接近的就是echo。我喜欢跳过括号的能力。

我的问题是,如果有一种方法可以在PHP中编写函数,那么不需要使用括号?

+4

'echo'不是一个函数,而是一个“语言结构”(http://php.net/manual/en/function.echo.php),这就是为什么你可以使用没有括号。看看这个答案:http://stackoverflow.com/questions/1180184/what-is-the-difference-between-a-language-construct-and-a-built-in-function-in – Yaniro 2012-03-17 09:03:26

回答

6

从PHP内部?

您需要修改Zend引擎中的C代码。这当然是不可取的,因为您需要使用自定义构建来运行代码。这也会让其他程序员不知所措。您不应该仅仅因为您喜欢跳过令牌的能力而尝试更改核心语言功能。

括号对于表示函数调用很重要。

诸如echo,include等之类的东西被称为语言结构。它们在语言中的实现方式类似于普通的一元运算符,如new,++等。

还要注意,语言结构不会严格忽略括号。以unset()为例。

+0

“否”这个问题就足以说明如何编写“PHP中的函数”。 – salathe 2012-03-17 09:41:44

+3

@salathe正在丰富的答案皱起了眉头? – alex 2012-03-17 09:42:32

+0

只有当它回答题外话。 – salathe 2012-03-17 09:59:33

0

echo()实际上并不是一个函数(它是一种语言结构),因此您不需要使用括号。 如果您需要更多关于回声去[1] http://php.net/manual/en/function.echo.php

2

没有。 “回声”不是PHP中的函数,而是一种语言结构,这就是为什么你可以使用它,而不需要parens。 “包含”或“要求”也是如此,您可以使用它们,不管是否包含parens。