我可以创建一个我可以在没有括号的情况下调用的PHP函数吗?

时间:2008-10-17 15:16:03

标签: php function

我有一个有效替代打印的功能,我想在没有括号的情况下调用它,就像调用print一样。

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

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

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

,它可以准确地显示此行为
sub myprint(@) { ... }

PHP中有类似的东西吗?

6 个答案:

答案 0 :(得分:22)

打印不是variable functions

  

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

并且:

  

变量函数

     

PHP支持变量的概念   功能。这意味着,如果一个   变量名称附加了括号   对它来说,PHP会寻找一个功能   与任何相同的名称   变量评估为和将   试图执行它。除其他外   事情,这可以用来实现   回调,函数表等   类推。

答案 1 :(得分:11)

仅通过编辑PHP代码库并添加新的语言构造。

- 亚当

答案 2 :(得分:9)

不,你不能用PHP做到这一点。 打印实际上不是一个功能,它是一种“语言结构”。

答案 3 :(得分:2)

不,PHP不允许你这样做。

答案 4 :(得分:2)

我一直在寻找一种方法来编写一个echoh来做类似的事情:

echoh "hello";

并获得:

'hello<br>\n'.

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

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

现在我明白了:

Hello<br>

我知道它需要更多的输入,但它更适合PHP手册中的示例,并且我使用带有omnicomplete的gvim来节省输入。此外,通过PHP_BR_EOL进行全局搜索/替换PHP_EOL也很容易。

答案 5 :(得分:0)

用PHP不能用餐。声明的函数必须用方括号

调用