首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在HEREDOC字符串中调用PHP函数?

如何在HEREDOC字符串中调用PHP函数?
EN

Stack Overflow用户
提问于 2018-03-19 10:50:23
回答 2查看 0关注 0票数 0

在PHP中,HEREDOC字符串声明对于输出html代码块非常有用。你可以通过在变量前面加$来解析变量,但对于更复杂的语法(如$ var [2] [3]),你必须把你的表达式放在{}括号中。

在PHP 5中,这可能实际上使函数调用中的{}一HEREDOC字符串中括号,但你必须要经过一些工作。函数名称本身必须存储在一个变量中,必须将其称为动态命名函数。例如:

代码语言:javascript
复制
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;

正如你所看到的,这比以下更混乱:

代码语言:javascript
复制
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;

除了第一个代码示例外,还有其他一些方法,比如抛出HEREDOC来调用函数,或者颠倒这个问题并执行如下操作:

代码语言:javascript
复制
?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>

后者的缺点是输出直接放入输出流(除非我使用输出缓冲),这可能不是我想要的。

所以,我的问题的本质是:有没有更好的方法来解决这个问题?

EN

Stack Overflow用户

发布于 2018-03-19 19:03:40

个人而言,我完全不会使用HEREDOC。它只是没有建立一个好的“模板构建”系统。所有的HTML都被锁定在一个有几个缺点的字符串中

  • 所见即所得没有选择
  • IDE中没有代码完成HTML
  • 输出(HTML)锁定到逻辑文件
  • 你最终不得不使用黑客,比如你现在想做的事情来实现更复杂的模板,比如循环

得到一个基本的模板引擎,或者只是使用PHP与包括-这就是为什么语言具有<?php?>分隔符。

template_file.php

代码语言:javascript
复制
<html>
<head>
  <title><?php echo $page_title; ?></title>
</head>
<body>
  <?php echo getPageContent(); ?>
</body>

index.php

代码语言:javascript
复制
<?php

$page_title = "This is a simple demo";

function getPageContent() {
    return '<p>Hello World!</p>';
}

include('template_file.php');
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档