【问题标题】:php echo does not need parenthesisphp echo不需要括号
【发布时间】:2012-04-02 15:58:54
【问题描述】:

因为 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 中编写一个不需要使用括号的函数?

【问题讨论】:

标签: php function echo


【解决方案1】:

从 PHP 内部?

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

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

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

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

【讨论】:

  • @salathe 充实一个不受欢迎的答案吗?
  • @salathe 我不相信它在这里。我告诉了 OP如何 这样做以及这样做的缺点。
  • @salathe ...是 [there] 一种用 PHP 编写函数的方法,不需要使用括号? 我回答了 不是不修改 Zend 引擎中的 C 代码。对我来说似乎是对这个问题的回答。如果对您有帮助,我会明确添加 not in PHP 部分。
  • @salathe 我更愿意了解我的问题的答案,然后了解更多相关信息。我只是不同意,然后就这样吧。此外,认为我在其他答案中添加了要接受的额外信息是一种假设和错误的想法。
  • 我明白你的观点,但我更喜欢亚历克斯给出的更深入的答案。如果答案只是“是”或“否”,我会讨厌。以是的情况为例。这会让我问另一个人问“那怎么办?”。此外,很多时候,一个简单的 yes|no 非常具有误导性。
【解决方案2】:

echo() 实际上不是一个函数(它是一种语言结构),因此您不需要使用括号。

更多关于回声的信息可以在这里找到:http://php.net/manual/en/function.echo.php

【讨论】:

    【解决方案3】:

    没有。 “Echo”不是 php 中的函数,而是一种语言结构,这就是为什么你可以不带括号使用它的原因。 "include" 或 "require" 也是如此,您可以使用或不使用括号。

    【讨论】:

      猜你喜欢
      • 2012-08-03
      • 2010-09-27
      • 2014-08-09
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      相关资源
      最近更新 更多