Untuk langsung menjawab pertanyaan Anda: Jangan gema teks statis atau HTML. Biarkan itu di luar PHP Anda.
<?php echo "<p>Hello World</p>"; // Alway wrong. ?>
<p>Hello World</p> <!-- Does the same thing, faster, and is more readable. -->
Melarikan diri ke PHP adalah pemborosan jika semua yang akan Anda lakukan adalah lulus dalam teks statis atau html statis. Semua kode di dalam <?php ?>
dikirim ke PHP untuk ditafsirkan. Ini berarti situs web Anda lebih lambat dan Anda membuang-buang listrik jika Anda mengirimkan sejumlah besar teks statis ke PHP tanpa alasan. (Terkadang ada alasannya.)
Praktik terbaik adalah memiliki logika dan pekerjaan kasar di file tanpa HTML, hanya PHP.
Cara saya suka melakukan ini adalah dengan kerangka kerja MVC. Saya memiliki PHP murni dalam model dan pengontrol, dan campuran HTML dan PHP dalam tampilan. Anda tidak membutuhkan kerangka kerja MVC; Anda bisa menempelkan campuran HTML Anda di file templat, yang kemudian Anda sertakan dalam file PHP murni Anda.
Setelah Anda membuat variabel Anda (yang tidak menyertakan HTML) dibuat dalam file PHP murni, Anda bisa meneruskannya ke file dengan HTML Anda. Di sana, dan hanya di sana, apakah boleh mencampur HTML dan PHP. Tapi, dan ini penting tetapi, ketika bekerja dengan file yang memiliki HTML, pertahankan PHP seminimal mungkin.
Untungnya, PHP dilengkapi dengan alat yang ramah untuk membuat PHP lebih mudah dibaca ketika dicampur dengan html.
Sintaks Alternatif
Praktik terbaik adalah dengan menggunakan sintaks PHP biasa ketika menulis PHP murni, tetapi sintaks alternatif, saat mencampur PHP dan HTML.
Dalam file PHP biasa tanpa HTML apa pun:
if ($something) {
do_something(); // do_something() shouldn't echo or print.
}
Ini indah untuk PHP murni, tetapi tidak ideal saat melarikan diri dari HTML. Secara khusus, kurung kurawal sering sulit dipahami ketika muncul dalam tumpukan besar HTML.
Tampaknya, berdasarkan pertanyaan Anda yang akan Anda tulis, dalam file yang mencampur HTML dan PHP, ini:
<?php
if ($something) {
echo '<p>Hello World.</p>';
}
?>
Untuk alasan yang dijelaskan di atas, kami ingin agar HTML tidak dikirim ke PHP. Kami melakukan ini seperti ini:
<?php if ($something) { ?>
<p>Hello World.</p>
<?php } ?>
Kami mengeluarkan HTML dari tag PHP kami, yang merupakan peningkatan. Tapi kita bisa melangkah lebih jauh.
Perhatikan betapa tidak informatif penahan penutupan itu? Kami tidak tahu apakah itu menutup loop atau pernyataan if. Ini tampaknya sepele dalam contoh di atas, tetapi sering ada puluhan baris HTML di dalam if / endif di dalam loop / endloop.
Praktik terbaik adalah bahwa dalam file yang mencampur PHP dan HTML, Anda menggunakan sintaks alternatif, yang menghilangkan kawat pembuka dan penutup ( { }
):
<?php if ($something): ?>
<p>Hello world.</p>
<?php endif; ?>
Selain dari semantik sintaks baru ( :
dan endif;
bukannya {
dan }
), Anda harus memperhatikan dua hal:
- Sekali lagi, HTML dan teks, sementara dikendalikan oleh PHP, berada di luar
<?php ?>
tag, sehingga tidak ditafsirkan. Untuk alasan yang dijelaskan di atas, ini bagus.
- Ini jauh lebih informatif daripada jika ini semua php termasuk kurung kurawal penutupan acak (
<?php } ?>
) menutup hal-hal yang sulit untuk menemukan di mana mereka membuka (karena mereka dicampur dengan buch HTML yang tampak berantakan). Sekali lagi, bayangkan file HTML besar dengan loop dan pernyataan if. Menentukan apa yang Anda tutup dapat mengklarifikasi banyak.
Sintaks ramah template yang sama dapat digunakan untuk loop juga:
<?php foreach ($things as $thing): ?>
<li><?php echo $thing; ?></li>
<?php endforeach; ?>
Tag Pendek
Alat hebat lain yang disediakan oleh PHP yang, sekali lagi, Anda hanya ingin menggunakan saat menggabungkan PHP dan HTML bersama-sama, adalah tag pendek. Anda mungkin harus mengaktifkan tag pendek di file php.ini. Setelah diaktifkan, tag pendek membuat segalanya lebih mudah dibaca.
Tanpa tag pendek, Anda harus menulis <?php echo $something; ?>
tetapi dengan tag pendek Anda dapat menulis <?=$something?>
dan itu akan memiliki hasil yang sama persis.
Saat menggabungkan tag pendek dan sintaks PHP alternatif, Anda dapat benar-benar menulis beberapa file HTML yang elegan, yang mencakup elemen PHP. Mengambil contoh loop terakhir kami (hanya bagian di dalam loop), tag pendek memungkinkan kami mengurangi:
<li><?php echo $thing; ?></li>
untuk
<li><?=$thing?></li>
yang jauh lebih mudah dibaca.
Bisakah kita melangkah lebih jauh? Iya nih. Menggunakan berbagai sistem templating Anda dapat melakukan hal-hal seperti:
<li>{thing}</li>
Yang luar biasa bisa dibaca. Sistem templating, bagaimanapun, adalah jauh di luar ruang lingkup dari pertanyaan aslinya (yang saya tinggalkan beberapa waktu yang lalu).