PHP HTML yankı için en iyi yoldur [kapalı]

9 Cevap php

Ben oldukça deneyimli PHP kodlayıcı değilim, ve sadece HTML kodu büyük boyutta yankılanan en iyi yolu (en iyi uygulama) ne olduğunu merak ediyorum.

Bunu yapmak için daha iyi mi:

<?php
echo "<head>
<title>title</title>
<style></style>
</head>";
?>

ya da bu:

<?php
define("rn","\r\n");
echo "<head>".rn
."<title>title</title>".rn
."<style></style".rn
."</head>".rn;
?>

Ben php kaynağında girinti pisliği yok gibi ikinci kullanma eğiliminde. Bu insanların çoğu bunu yolu var mı?

9 Cevap

IMO, en iyi yolu, bir şablon dosyasında ayrı ayrı HTML saklamak için genellikle. Bu genellikle Daha sonra gerektiği gibi güvenli bir html belgesindeki alanları doldurmak için bazı çiftleşmiş çerçeve kullanabilirsiniz içeri dolu olsun gereken bazı alanları ile HTML içeren bir dosyadır.

Smarty bir popüler çerçeve, burada (Smarty adlı kurs alınan) nasıl çalıştığını bir örnek.

Şablon Dosyası

<html>
<head>
<title>User Info</title>
</head>
<body>

User Information:<p>

Name: {$name}<br>
Address: {$address}<br>

</body>
</html>

Adını & bujileri php kodu şablon dosyası içine adres:

include('Smarty.class.php');

// create object
$smarty = new Smarty;

// assign some content. This would typically come from
// a database or other source, but we'll use static
// values for the purpose of this example.
$smarty->assign('name', 'george smith');
$smarty->assign('address', '45th & Harris');

// display it
$smarty->display('index.tpl');

Kenara Smarty sizin zevkinize uyacak şekilde çerçeveler çiftleşmiş için makul seçenek onlarca var. Bazı basit, birçok bazı oldukça sofistike özelliklere sahip.

Ayrıca PHP kod bloğunun dışında HTML koyabilirsiniz:

<?php
    // PHP code
?>
<head>
<title>title</title>
<style></style>
</head>
<?php
    // further PHP code
?>

Ayrıca Yorumlu metin (http://www.php.net/manual/en/language.types.string.php # language.types.string.syntax.heredoc) erişebilirsiniz unutma

echo <<< HERE
<head>
   <title>title</title>
   <style></style>
</head>
HERE;

Ayrıca, ben Smarty şablonları gibi bir şey içine bakmak istiyorum - ve daha da önemlisi iş mantığı ayıran işaretlemeyi zorlar MVC tasarım deseni.

kullanıcı metin sözdizimidir

echo <<<NO_MORE

<head>
<title>title</title>
<style></style>
</head>

NO_MORE;

ya da sadece php çıktı html kaçmak doğrudan ?> ... <?php

Ben ne iyi çözüm olduğunu düşünüyorum. Html Echoing çok okunabilir değildir. Ben her zaman php etiketleri dışında html koydu. Bu şekilde, girinti olsun, ve çok daha okunabilir.

Böyle bir şey:

?>
<head>
    <title>title</title>
    <style></style>
</head>
<?php

Eğer daha fazla almak istiyorsanız, gerçekten sunum mantığı ayırmak için bir şablon sistemi kullanabilirsiniz.

Verilen yeterli alternatifleri zaten var olduğundan, ben sadece ikinci yaklaşımı hakkında yorum istiyorum. Eğer echo ile yapmak istiyorsanız, kullanımı daha iyidir:

echo "<head>", PHP_EOL,
     "<title>title</title>", PHP_EOL
     "<style></style", PHP_EOL
     "</head>", PHP_EOL;

Ayrıca gereksiz sabiti ile çöp küresel kapsamını PHP_EOL yerine özel bir sabitten değil kullanarak ve satır OS-bağımsız, bu işletim sistemi PHP tanımlanır ne kullanmak gibi çalışan yapar.

Yerine konsatenasyonundan virgül kullanarak size nedeniyle PHP tüm bağlamak zorunda, ama sadece yankı atmak ne olursa olsun kızarma değil bazı bellek kaydeder.

İlk formu dize birleştirme yapmaz gibi, daha verimli (.).

HTML görüntülemek için tırnak kullanıyorsanız PHP statik dizeleri gösteren az preferment olan çift tırnak ", içine değişkenler arar, çünkü tek tırnak ' olanları kullanın.

Benim için en iyi yöntem PHP bloğunun dışında biri olmaya devam ediyor, bazı diğerleri gibi cevap verdi.

Ayrıca, kısayol unutma.

Bu benim için iyi çalıştı!

 <?php
     echo '
          <!DOCTYPE HTML>
          <html lang="en-US">
          <head>
              <meta charset="utf-8" />
              <link rel="stylesheet" type="text/css" href="styles.css" />
              <script type="text/javascript" src="js/jquery.js"></script>
              <script type="text/javascript" src="js/java.js"></script>
          </head>    
          <body>
              <div id="wrap">
                  <div id="main_home"></div>
                  <div id="nav_circle"></div>
                  <input type="text" id="search_text" value="Your search starts here">
              </div>
          </body>
          </html>
    ';
?>

You can echo large amount of HTML code like this in PHP. You have to be sure that is no ' inside HTML. Replace it with " and it will go on!!