我有一大堆HTML代码(里面有一些PHP变量),我需要多次(循环内)和多页显示。
那么如何保持干爽?
我的想法当然不是很出色:
将它放在一个单独的文件中并包括 - 但是我会在循环内部进行包含并显示出糟糕的做法。
将它放在一个函数中 - 但是我必须将变量设为全局加上它不会让我觉得函数就是这样用的。
有更好的方法吗?这可能是OOP有解决方案吗? (我运行php 5.3)
答案 0 :(得分:0)
使用模板。
只需在模板内部编写循环,以及所有其他演示文稿代码。
<h1>Some list</h1>
<ul>
<?php foreach($data as $row): ?>
<li><?=$row['name']?> whatever your block code goes here</li>
<?php endforeach ?>
</ul>
所以,根本不需要包含任何内容。
对于多个页面,您可能希望创建一个辅助函数,从模板调用。
答案 1 :(得分:0)
你不能将你需要的指定变量传递给函数吗?
function foo($name, $something) {
echo '<b>' . $name . '</b> is ' . $something;
}
然后,变量不必是全局的......或者让函数返回字符串,而不是上例中的echo。
答案 2 :(得分:0)
是的OOP可以帮助你,我创建了一个set of classes来显示链接到各种元素的页面上的社交插件(Facebook,G plus,twitter)。
我在页面顶部设置了帮助类
$socialPlugins = new SocialPluginsHelper(array(
SocialPluginsHelper::HTML_AFTER_BUTTONS => '<div class="clear"></div>',
SocialPluginsHelper::HTML_BEFORE_BUTTONS => '<div class="clear"></div>',
SocialPluginsHelper::STYLE_OF_WRAPPER => 'margin-top:5px;',
SocialPluginsHelper::CUSTOM_PLUGIN_STYLE => array(
"TwitterButton" => "width:69px;",
"FacebookLike" => "width:146px;")
)
);
$socialPlugins->add(PluginFactory::create("FacebookLike", array(FacebookLike::FB_WIDTH => "146")));
$socialPlugins->add(PluginFactory::create("TwitterButton"));
$socialPlugins->add(PluginFactory::create("Gplus"));
然后在循环中我只需要调用
$socialPlugins->renderAllButtons(array("FacebookLike" => array(FacebookLike::FB_HREF => $url)));
这是我可以保持的干燥,你可能需要根据你的具体需求建立不同的架构,这只是为了给你一个想法