29

我有一个可以有效替代 print 的函数,我想在不带括号的情况下调用它,就像调用 print 一样。

# Replace
print $foo, $bar, "\n";

# with
myprint $foo, $bar, "\n";

在 Perl 中,您可以使用参数模板创建子例程,如果您将子例程定义为

sub myprint(@) { ... }

PHP中有类似的东西吗?

4

6 回答 6

22

print 不是变量函数

因为这是一种语言结构而不是函数,所以不能使用变量函数调用它

和 :

变量函数

PHP 支持变量函数的概念。这意味着如果一个变量名附加了括号,PHP 将寻找一个与该变量计算结果相同的名称的函数,并尝试执行它。除其他外,这可用于实现回调、函数表等。

于 2008-10-17T15:22:23.547 回答
11

只需编辑 PHP 代码库并添加新的语言结构即可。

-亚当

于 2008-10-17T15:29:41.817 回答
9

不,你不能在 PHP 中做到这一点。Print 实际上不是一个函数,它是一个“语言结构”。

于 2008-10-17T15:19:35.190 回答
2

不,PHP 不允许您这样做。

于 2008-10-18T20:49:55.007 回答
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_BR_EOL 进行全局搜索/替换 PHP_EOL 也很容易。

于 2011-03-27T21:50:41.457 回答
0

那不能用 PHP 吃饭。您声明的函数必须用括号调用

于 2018-09-05T10:34:10.617 回答