PHP - 在循环中使用include的替代方法

时间:2012-03-30 09:21:18

标签: php oop architecture include

我有一大堆HTML代码(里面有一些PHP变量),我需要多次(循环内)和多页显示。

那么如何保持干爽?

我的想法当然不是很出色:

  • 将它放在一个单独的文件中并包括 - 但是我会在循环内部进行包含并显示出糟糕的做法。

  • 将它放在一个函数中 - 但是我必须将变量设为全局加上它不会让我觉得函数就是这样用的。

有更好的方法吗?这可能是OOP有解决方案吗? (我运行php 5.3)

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)));

这是我可以保持的干燥,你可能需要根据你的具体需求建立不同的架构,这只是为了给你一个想法