php - 在字符串连接之前呈现 PHP foreach 循环
问题描述
我正在尝试在<article>
.
Hello World 组件:
//components/HelloWorld.php
<?php //some comments ?>
<h1><?php echo 'Hello World'; ?></h1>;
Foo 组件:
//components/Foo.php
<?php //some comments ?>
<?php echo 'Foo'; ?>;
我的课:
//Render_Content.php
class Render_Content {
public $content_components;
function __construct($args) {
$this->content_components = $args['content_components'];
}
private function loop_components($components) {
foreach($components as $component):
require 'components/' . $component . '.php';
endforeach;
}
public function render_content() {
$rendered_content = '<article>';
$rendered_content .= $this->loop_components($this->content_components);
$rendered_content .= '</article>';
echo $rendered_content;
}
}
我的文件:
//myfile.php
$args = array(
'content_components' => ['HelloWorld', 'Foo']
);
$content = new Render_Content($args);
$content->render_content();
我期望发生的是这样的:
<article>
<h1>Hello World</h1>
<h1>Foo</h1>
</article>
但是,发生的事情是这样的:
<h1>Hello World</h1>
<h1>Foo</h1>
<article></article>
我究竟做错了什么?
提前感谢您的帮助。
解决方案
正如@NiettheDarkAbsol 在评论中指出的那样,此代码将起作用。
//Render_Content.php
class Render_Content {
public $content_components;
function __construct($args) {
$this->content_components = $args['content_components'];
}
private function loop_components($components) {
ob_start();
foreach($components as $component):
require 'components/' . $component . '.php';
endforeach;
return ob_get_clean();
}
public function render_content() {
$rendered_content = '<article>';
$rendered_content .= $this->loop_components($this->content_components);
$rendered_content .= '</article>';
echo $rendered_content;
}
}
推荐阅读
- java - java.lang.NoClassDefFoundError procrun
- angular - Angular 8 如何构建具有不同环境的应用程序
- spring-integration - 成功渠道没有选择正确的委托工厂
- flutter - 如何将 SingleChildScrollView 居中但使背景拉伸以填满屏幕?
- android - 为什么我的 Android Studio 游戏突然崩溃?
- isabelle - 如何在语言环境的假设中使用写在语言环境参数上的定义?
- swift - 如何使用 Swift 的授权服务验证本地 macOS 用户的密码?
- android - 滑动视图 + appbar(协调器布局)
- python - 如何将字符串列表中的反向字符串与python中的原始字符串列表进行比较?
- android - 与 AlertDialog 一起显示/隐藏键盘