我能创建一个无需括号即可调用的PHP函数吗?

29

我有一个函数,实际上它可以替代print,我想像调用print一样不使用括号来调用它。


I have a function that can effectively replace print, and I want to call it without parentheses, just like calling print.
# Replace
print $foo, $bar, "\n";

# with
myprint $foo, $bar, "\n";
在Perl中,您可以使用参数模板创建子例程,并且如果您将子例程定义为以下方式,则允许完全具有此行为。
sub myprint(@) { ... }

PHP中有类似的东西吗?

6个回答

22

print不是可变函数

因为print是语言结构而不是函数,所以无法使用可变函数对其进行调用。

另外:

可变函数

PHP支持可变函数的概念。这意味着如果一个变量名后面有括号,PHP将寻找与该变量名相同的函数,并尝试执行它。除此之外,还可以实现回调、函数表等功能。


11

只有通过编辑 PHP 代码库并添加新的语言结构才能实现。

-Adam


10

不可以在PHP中那样做。 Print不是一个函数,而是一种“语言结构”。


2
我正在寻找一种编码方法,以实现类似以下的echoh功能:
echoh "hello";

并且获得:

'hello<br>\n'.

我想一个解决方案可能是定义一个常量并使用它:

<?php
const PHP_BR_EOL = "<br>\n";
echo "Hello" . PHP_BR_EOL;
?>

现在我明白了:

Hello<br>

我知道这需要更多的打字,但它更符合PHP手册上的例子,而且我使用gvim和omnicomplete来节省打字。此外,通过将PHP_EOL替换为PHP_BR_EOL,全局搜索/替换会更容易。


2
不行,PHP不允许你这样做。

0

PHP 无法完成此操作。您声明的函数必须带括号调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接