PHP中具有名称空间的变量函数

Mat*_*att 11 php namespaces

我想知道是否有办法用命名空间调用变量函数.基本上我正在尝试解析标签并将它们发送到模板函数,以便它们可以呈现html`

这是一个例子:(我使用的是PHP 5.3)

 // Main php file
require_once 'template.php';
foreach (array("javascript","script","css") as $tag) {
    echo template\$tag();
}

 // template.php
 namespace template;

 function javascript() { return "Hello from javascript"; }
 function css() { return "Hello from css"; }
 function script() { return "Hello from script"; }
Run Code Online (Sandbox Code Playgroud)

我一直得到Parse错误:语法错误,意外的T_VARIABLE,期望第76行的T_STRING ......

谢谢!马特

GZi*_*ipp 7

这也可以,不需要call_user_func,只需使用变量功能文档功能:

require_once 'template.php';

$ns = 'template';
foreach (array('javascript', 'script', 'css') as $tag) {
    $ns_func = $ns . '\\' . $tag;
    echo $ns_func();
}
Run Code Online (Sandbox Code Playgroud)


And*_*ore 5

当然你可以,但不幸的是,你需要call_user_func()用来实现这个目标:

require_once 'template.php';
foreach (array("javascript","script","css") as $tag) {
    echo call_user_func('template\\'.$tag);
}
Run Code Online (Sandbox Code Playgroud)

PHP中的命名空间是相当新的.我相信将来他们会修复它,所以我们不再需要call_user_func()了.

  • 需要一个参数.这是怎么做的.echo call_user_func('template \\'.$ tag,$ params); (2认同)