使用字符串调用PHP语言构造

Ben*_*Ben 2 php buffer call language-construct

我想缓冲一些内容.获取内容的方式取决于,这就是为什么我在缓冲区函数中添加了一个类型参数来定义是包含还是回显源.

PHP

<?php

function bufferContent($source, $type = 'include') {
  ob_start();
  $type($source);
  return ob_get_clean();
}

echo bufferContent('<html>test</html>', 'echo');

?>
Run Code Online (Sandbox Code Playgroud)

产量

Fatal error: Call to undefined function echo() in #### on line 5
Run Code Online (Sandbox Code Playgroud)

为什么?是不是可以通过字符串变量调用echo()或include()等标准PHP函数?

编辑:略微更改问题以使其更适合答案.

Pas*_*TIN 6

echo不是一个函数:它是一种语言结构 - 因此,它不能以这种方式调用.

您可能会定义一个函数,它本身会调用echo - 并在调用时使用您的函数bufferContent:

function my_echo($str) {
    echo $str;
}
echo bufferContent('<html>test</html>', 'my_echo');
Run Code Online (Sandbox Code Playgroud)


一个引用,引用手册页echo:

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