2012-03-30 21 views
1

私は複数回(ループの中で)複数のページで表示する必要があるHTMLコード(その内部にいくつかのPHP変数がエコーされている)を持っています。PHP - ループの中にインクルードを使用する代わりに

どうやってドライを保つのですか?

私のアイデアは確かに華麗ませんでした:

  • は別のファイルにそれを置くと、を含む - が、その後、私はループ内で含まやると、それは悪い習慣のように示しました。

  • 私は変数をグローバルにする必要がありますが、関数はそのような用法のように見えません。

もっと良い方法がありますか?おそらくOOPに解決策があるのでしょうか? (私はPHP 5.3を実行する)

+0

関数を呼び出す場合、なぜグローバル変数を作る必要がありますか?また、コードスニペットを使用すると、提案を行うことができます。 –

+0

いくつかのコードを投稿すると役立ちます。レジストリパターンを見てくださいhttp://www.devshed.com/c/a/PHP/Registry-Design-Pattern/ – dotoree

答えて

0

テンプレートを使用してください。

テンプレート内のループだけでなく、他のすべてのプレゼンテーションコードを記述してください。

<h1>Some list</h1> 
<ul> 
<?php foreach($data as $row): ?> 
    <li><?=$row['name']?> whatever your block code goes here</li> 
<?php endforeach ?> 
</ul> 

だから、何も含める必要はありません。

複数のページについては、テンプレートから呼び出されたヘルパー関数を作成することができます。

0

は、あなたが関数に必要な指定された変数を渡すことができませんでしたか?

function foo($name, $something) { 
     echo '<b>' . $name . '</b> is ' . $something; 
} 

その後、変数はグローバルでなければならない...または機能は、上記の例では、エコー対、文字列を返す必要はありません。

+0

私は可能ですが、不必要に物事が複雑になっているようです。しかし、私の考えよりはるかに良い。 – CodeVirtuoso

0

はいOOPはあなたに手を与えることができ、私は様々な要素にリンクされている私のページの社会的なプラグイン(フェイスブック、Gプラス、さえずり)を表示するためにset of classesを作成しました。

私は

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

私のページの最上部attheヘルパークラスを設定し、その後、私はちょうどこれは私が保つことができるように乾燥している

$socialPlugins->renderAllButtons(array("FacebookLike" => array(FacebookLike::FB_HREF => $url))); 

を呼び出すループ内で、あなたが必要な場合がありますあなたの特定のニーズに基づいた異なるアーキテクチャー、これはちょうどあなたにアイデアを与えることです

関連する問題