3 回答
TA贡献1804条经验 获得超3个赞
我个人不会使用HEREDOC。它只是不能构成一个好的“模板构建”系统。您所有的HTML都被锁定在一个字符串中,这有几个缺点
所见即所得没有选择
IDE中的HTML没有代码完成
输出(HTML)锁定到逻辑文件
您最终不得不像现在尝试那样使用hack来实现更复杂的模板,例如循环
获得基本的模板引擎,或仅将PHP与include一起使用-这就是该语言具有<?php和?>分隔符的原因。
template_file.php
<html>
<head>
<title><?php echo $page_title; ?></title>
</head>
<body>
<?php echo getPageContent(); ?>
</body>
index.php
<?php
$page_title = "This is a simple demo";
function getPageContent() {
return '<p>Hello World!</p>';
}
include('template_file.php');
TA贡献1818条经验 获得超8个赞
如果您确实想这样做,但是比使用类简单一些,则可以使用:
function fn($data) {
return $data;
}
$fn = 'fn';
$my_string = <<<EOT
Number of seconds since the Unix Epoch: {$fn(time())}
EOT;
TA贡献1796条经验 获得超10个赞
尝试以下操作(作为全局变量,或在需要时实例化):
<?php
class Fn {
public function __call($name, $args) {
if (function_exists($name)) {
return call_user_func_array($name, $args);
}
}
}
$fn = new Fn();
?>
现在,任何函数调用都将通过$fn实例。因此,现有功能testfunction()可以在Heredoc中使用{$fn->testfunction()}
基本上,我们将所有函数包装到一个类实例中,并使用PHP的__call magic方法将类方法映射到需要调用的实际函数。
- 3 回答
- 0 关注
- 482 浏览
添加回答
举报