Ayrı bir dosyada kod tutun

3 Cevap php

topic.php

$id = isset($_GET['id']) ? intval($_GET['id']) : 0;

$query = mysql_query("SELECT * FROM topics WHERE id = $id");
$row = mysql_fetch_assoc($query);


$title = htmlspecialchars($row['title']);
$text = bbcode($row['text']);

view / topic.php

<h1><?=$title?></h1>
<p><?=$text?></p>

<h1>Replies</h1>

$q = mysql_query("SELECT * FROM replies WHERE topic_id = $id");
while ($r = mysql_fetch_array($q)) {
$text = bbcode($r['text']);
$date = $r['date'];
$poster = $r['poster'];
$edited = $r['edited'];

echo "<p>$text</p>";.......
}

As you can see I have some ugly code in the view / topic.php. Can I keep it in topic.php somehow? Not fun for a web designer to have to deal with all this.

Teşekkürler!

3 Cevap

Sen topic.php bir fonksiyon içine bir fonksiyonu haline viewtopic.php kodunu koyarak deneyebilirsiniz.

Zaten viewtopic.php içinde topic.php dahil gibi görünüyor, ama siz değilseniz, siz de bunu isteyeceksiniz.

Örneğin, topic.php için bu eklemek istiyorum:

function ViewTopic($id) {

     $q = mysql_query("SELECT * FROM replies WHERE topic_id = $id");
     while ($r = mysql_fetch_array($q)) {
     $text = bbcode($r['text']);
     $date = $r['date'];
     $poster = $r['poster'];
     $edited = $r['edited'];

     echo "<p>$text</p>";.......

}

Ve burada viewtopic.php benzeyecektir ne:

<h1><?=$title?></h1>
<p><?=$text?></p>

<h1>Replies</h1>

ViewTopic($id);

}

Sadece ihtiyacınız ne olursa olsun döndüren bir işlev içine tüm kod atmak olabilir. sonra işlevini çağırmak echo func()

Tampon kullanımı gerçekten kolay kendi küçük motor şablonu daha iyi mantık / düzen ayrılmasını sağlamak oluşturabilirsiniz.

function renderView($viewFile, $data) {
	ob_start();
	extract($data);
	require($viewFile);
	return ob_get_clean();
}

Yukarıdaki kod biraz hobi projesi olduğunu ve bu tam değil, ama bu kavramı iyi bir kanıtı. Ne yapar geçerli kapsamda onları kullanılabilir hale $ veri HashMap anahtar / değer çiftlerini elde etmektir. $ Data = array ("name" => "Kim"); görünüm içinde $ isim erişilebilir hale getirecek.

Eğer çıkışı ile ne istersen yapabilirsin, böylece tüm bu çıktı tamponunun içinde yapılır. Sen, önbelleğe alma uygulamak istediğiniz e-posta (artık aşırı dize birleştirme) ve bunun gibi şeyleri işlemek için kullanabilirsiniz.