Saya telah melihat konvensi ini cukup banyak di mana-mana, dan, kadang-kadang, hampir membuat saya gila:
<?php //The loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; // end of the loop. ?>
Di mana <?php
dan penutup ?>
berada di setiap baris, meskipun tidak ada kode HTML yang campur tangan.
Pertanyaan saya adalah: Mengapa? Mengapa menyertakan semua tag tambahan ini?
Bagi saya, tampaknya konvensi ini menambahkan sejumlah besar kekacauan pada kode, mengganggu untuk diikuti di tempat pertama, dan menambahkan bahwa lebih banyak tempat untuk secara tidak sengaja meninggalkan tag pembuka atau penutup.
CATATAN
Ini adalah kode yang diambil dari tema Dua Puluh Dua Belas, contoh yang diberikan oleh WordPress.
php
theme-development
customization
Indigenuity
sumber
sumber
Jawaban:
Ini tidak direkomendasikan dalam panduan gaya WordPress apa pun, dan saya pikir ini adalah gaya pengkodean yang buruk. Pemula menggunakan gaya ini, mungkin karena rasanya lebih seperti HTML ...
Sayangnya, tema default terlalu sering menggunakan gaya ini, sehingga beberapa pemula mungkin berpikir itu adalah bagian dari gaya kode.
Salah satu kelemahan gaya ini adalah penanganan komentar. Perhatikan baik-baik contoh berikut dan bagaimana itu tidak melakukan apa yang penulis harapkan:
Semoga berhasil men-debug itu. :)
Aturan: Beralih antara konteks PHP dan HTML hanya jika Anda harus membuat output dari kedua bahasa. Gunakan jeda baris reguler dalam semua kasus lainnya.
Perbarui, pemikiran lebih lanjut: Setiap file HTML yang valid adalah program PHP yang lengkap dan valid. Ya, bahkan jika itu tidak mengandung satu baris kode PHP yang sebenarnya.
Jika Anda mulai dari HTML dan menambahkan potongan-potongan kecil PHP langkah demi langkah ... Anda mungkin berakhir dengan gaya yang kita bahas di sini. Di situlah refactoring masuk ke dalam permainan: Setelah semuanya berjalan seperti yang diharapkan, tulis ulang kode hingga terbaca mungkin, mudah untuk mempertahankan dan memperluas, tanpa mengulangi bagian-bagian.
Saya kira beberapa orang bahagia tanpa langkah terakhir ini, dan itu sebabnya ini tidak akan mati segera.
sumber
<? ... ?>
untuk membuat bersarang lebih mudah untuk dipahami. Satu hal yang saya lakukan berbeda dari contoh OP, adalah bahwa saya menggunakanthe_post();
jalurnya sendiri.Sementara saya menghindari ini untuk komentar PHP, saya adalah pembuka PHP / keranjingan dalam file template. Alternatifnya melibatkan pengulangan HTML melalui string PHP, yang menurut saya terlihat lebih buruk. Sebagai contoh primitif:
Apakah contoh 2 lebih bertele-tele? Mungkin? Tetapi lebih mudah untuk membaca dan mengedit, menurut saya. Anda bisa membayangkan betapa jeleknya itu untuk HTML yang kompleks.
Juga, hanya sebagai catatan: menggunakan
endforeach
danendif
saat menulis HTML antara logika PHP Anda meningkatkan keterbacaan satu ton dibandingkan dengan}
.sumber
}
atasendif
bagaimanapun adalah bahwa (di banyak editor) Anda dapat dengan mudah melihat di mana pembukaan{
adalah dan karena itu apakah semuanya telah ditutup dengan benar. Coba cari tahu denganendif
dan sejumlah persyaratan ...foreach ( $list_items as $list_item ) printf( '<li><a href="%1$s">%2$s</a></li>', $list_item->url, $list_item->name );
- dua baris, HTML dan PHP dipisahkan dengan baik. : P<? ... ?>
dan<?= ... ?>
.endif
editor apa pun yang layak.Ini tentang pilihan antara melihat halaman sebagai:
Orang yang berbeda cenderung memikirkannya secara berbeda. Perhatikan bahwa fungsi jarang menggunakan gaya ini, karena mereka merasa lebih seperti blok PHP murni. Di sisi lain itu tidak biasa di templat karena mereka lebih tersebar di file dan jumlah HTML murni dapat dengan mudah lebih dari PHP di dalamnya.
Jika Anda melihat mesin templating (Kumis, Ranting, dll) - mereka terlihat sangat mirip dengan gaya ini kecuali bahwa sintaks mereka cenderung menghilangkan verbositas dari PHP biasa.
PS Saya ingin catatan yang saya bicarakan waras embedding PHP di HTML, tidak secara harfiah membuka dan berakhir tag pada setiap baris hanya untuk kepentingan itu.
sumber
Jawabannya cukup sederhana: Hadirin. Ketika orang (bukan pemrogram) mengambil tema, kemudian FTP menginstal mereka, menjalankan pengaturan 5 menit dan sebagainya sudah terasa seperti pemrograman untuk mereka. Ketika mereka ingin menambahkan atau mengubah satu baris dari apa pun di tema mereka, maka mereka mungkin sudah tahu apa itu HTML. PHP masih akan jauh dari jangkauan mereka. Jadi tebakan saya adalah bahwa ide di balik ini adalah untuk memungkinkan penambahan atau penghapusan elemen yang lebih mudah tanpa merusak apa pun ketika mereka melakukan kesalahan.
Catatan: Ini bukan yang saya sukai, sukai atau rekomendasikan. Hanya itulah yang saya pikirkan mengapa ini terjadi.
sumber
Saya telah menemukan bahwa beberapa programmer baru dilatih dengan cara ini. Saya mengikuti kursus 40 jam di Lynda dan instruktur menjatuhkan tag PHP di setiap baris, dengan pengecualian definisi fungsi. Mungkin untuk dengan jelas menggambar garis antara HTML dan PHP, yang mungkin membantu orang baru memahami di mana HTML berakhir dan PHP dimulai. Setelah itu, mungkin itu kebiasaan. Saya sendiri mulai kesal dengan hal itu dan memutuskan untuk melihat apakah ada orang lain yang mengeluh.
sumber