Berikut informasi menurut dokumentasi resmi :
Ada empat pasang tag pembuka dan penutup yang berbeda yang dapat digunakan dalam PHP. Dua di antaranya,
<?php ?>
dan<script language="php"> </script>
, selalu tersedia. Dua lainnya adalah tag pendek dan tag gaya ASP, dan dapat dinyalakan dan dimatikan dari file konfigurasi php.ini. Karena itu, sementara beberapa orang menemukan tag pendek dan tag gaya ASP yang nyaman, mereka lebih mudah dibawa-bawa, dan umumnya tidak direkomendasikan .
Dalam pengalaman saya kebanyakan server yang memiliki tag pendek diaktifkan. Mengetik
<?=
jauh lebih nyaman daripada mengetik
<?php echo
Kenyamanan programmer adalah faktor penting, jadi mengapa mereka tidak direkomendasikan?
php
coding-style
php-shorttags
MDCore
sumber
sumber
why
bagian ini, saya akan mengutip panduan sertifikasi Zend PHP 5: "Tag pendek adalah, untuk sementara waktu, standar di dunia PHP; namun, mereka memiliki kelemahan utama berkonflik dengan header XML dan, oleh karena itu, memiliki sedikit jatuh di pinggir jalan. "<?= $example;?>
! Ini sangat penting karena penggunaan semua tag pendek lainnya dianggap sia-sia. Pokoknya penggunaan tag gema pendek dianjurkan mulai sekarang. Itu menyediakan basis kode yang lebih halus dan lebih rapi - esp. dalam file tampilan. Jadi untuk PHP> = 5.4.0<?= ?>
dapat digunakan tanpa pengaturanshort_open_tag
. Tolong jangan gunakan tag pendek lainnya dalam kode Anda. Dewa-kode menjadi sangat marah ketika Anda melakukannya ...<?
tidak hanya digunakan dalam XML untuk<?xml version="1.0" ?>
deklarasi pembukaan ; ini adalah sintaks umum untuk "instruksi pemrosesan", contoh ke-2 yang paling umum<?xml-stylesheet ... ?>
.<?php
sebenarnya dapat dianggap sebagai instruksi pemrosesan yang valid, sebagaimana dapat<?=
(sebagaimana diizinkan dalam 5.4+), tetapi mengklaim keseluruhan<?
juga menciptakan konflik yang tidak perlu antara sintaksis.Jawaban:
Mereka tidak direkomendasikan karena ini adalah PITA jika Anda harus memindahkan kode ke server yang tidak didukung (dan Anda tidak dapat mengaktifkannya). Seperti yang Anda katakan, banyak host bersama melakukan dukungan shorttags tapi "banyak" adalah tidak semua dari mereka. Jika Anda ingin berbagi skrip, sebaiknya gunakan sintaks lengkap.
Saya setuju bahwa
<?
dan<?=
lebih mudah pada programmer daripada<?php
dan<?php echo
tetapi mungkin untuk melakukan massal menemukan-dan-mengganti selama Anda menggunakan formulir yang sama setiap kali (dan jangan membuang spasi) (misalnya:<? php
atau<? =
)Saya tidak membeli keterbacaan sebagai alasan sama sekali. Kebanyakan pengembang yang serius memiliki opsi penyorotan sintaks yang tersedia untuk mereka.
Seperti yang disebutkan ThiefMaster dalam komentar, pada PHP 5.4,
<?= ... ?>
tag didukung di mana-mana, terlepas dari pengaturan shorttag . Ini berarti mereka aman untuk digunakan dalam kode portabel tetapi itu berarti ada ketergantungan pada PHP 5.4+. Jika Anda ingin mendukung pra-5.4 dan tidak dapat menjamin shorttag, Anda masih perlu menggunakannya<?php echo ... ?>
.Juga, Anda perlu tahu bahwa tag ASP <%,%>, <% =, dan tag skrip dihapus dari PHP 7 . Jadi, jika Anda ingin mendukung kode portabel jangka panjang dan ingin beralih ke alat paling modern, pertimbangkan untuk mengubah bagian kode itu.
sumber
Saya terlalu suka
<?=$whatever?>
untuk membiarkannya. Tidak pernah punya masalah dengan itu. Saya akan menunggu sampai ia menggigit saya. Dalam semua keseriusan, 85% dari klien (saya) memiliki akses ke php.ini dalam kesempatan langka mereka dimatikan. 15% lainnya menggunakan penyedia hosting utama, dan hampir semuanya mengaktifkannya. Saya suka mereka.sumber
Dimulai dengan PHP 5.4, pintasan gema adalah masalah yang terpisah dari tag pendek, karena pintasan gema akan selalu diaktifkan. Itu fakta sekarang:
Jadi pintasan gema itu sendiri (
<?=
) aman untuk digunakan sekarang.sumber
<?php
dapat digunakan di awal semua file kelas, dan kemudian Anda miliki<?=
untuk tampilan Anda. menang-menang.So the echo shortcut itself (<?=) is safe to use
... selama Anda merasa nyaman membutuhkan PHP 5.4. Aplikasi PHP yang didistribusikan secara luas (seperti wordpress) tidak memiliki kemewahan membutuhkan 5.4, dan bahkan terus menawarkan dukungan PHP 4 hingga 2011 - 7 tahun penuh setelah PHP 5 dirilis. Jika Anda berada di tempat seperti Facebook, di mana semua instalasi perangkat lunak Anda secara langsung dioperasikan oleh perusahaan itu sendiri, maka memerlukan dukungan 5,4 jauh lebih mudah daripada jika Anda mengerjakan proyek seperti wordpress.Masalah dengan seluruh diskusi ini terletak pada penggunaan PHP sebagai bahasa templating. Tidak ada yang berpendapat bahwa tag harus digunakan dalam file sumber aplikasi.
Namun sintaksis PHP yang dapat disematkan memungkinkannya digunakan sebagai bahasa templat yang kuat, dan templat harus sesederhana dan semudah mungkin dibaca. Banyak yang merasa lebih mudah menggunakan mesin templating add-on yang jauh lebih lambat seperti Smarty, tetapi bagi mereka yang purist di antara kita yang menuntut rendering cepat dan basis kode murni, PHP adalah satu-satunya cara untuk menulis templat.
Argumen HANYA yang valid TERHADAP penggunaan tag pendek adalah bahwa tag tidak didukung di semua server. Komentar tentang konflik dengan dokumen XML itu menggelikan, karena Anda mungkin tidak seharusnya mencampurkan PHP dan XML; dan jika ya, Anda harus menggunakan PHP untuk menampilkan string teks. Keamanan seharusnya tidak pernah menjadi masalah, karena jika Anda memasukkan informasi sensitif seperti kredensial akses database di dalam file template, maka, Anda punya masalah yang lebih besar!
Nah, untuk masalah dukungan server, diakui kita harus menyadari platform target mereka. Jika kemungkinan shared hosting adalah target, maka tag pendek harus dihindari. Tetapi bagi banyak pengembang profesional (seperti saya), klien mengakui (dan memang, tergantung pada fakta) bahwa kami akan mendikte persyaratan server. Seringkali saya bertanggung jawab untuk menyiapkan server sendiri.
Dan kami TIDAK PERNAH bekerja dengan penyedia hosting yang tidak memberi kami kendali penuh atas konfigurasi server - dalam kasus seperti itu kami dapat mengandalkan untuk menjalankan lebih banyak masalah daripada hanya kehilangan dukungan tag pendek. Itu tidak terjadi.
Jadi ya - Saya setuju bahwa penggunaan tag pendek harus ditimbang dengan cermat. Tetapi saya juga sangat yakin bahwa itu harus SELALU menjadi pilihan, dan bahwa pengembang yang sadar akan lingkungannya harus merasa bebas untuk menggunakannya.
sumber
<?
sebagai tag pendek, karena itu mengarah pada solusi buruk pada XML. Yang mengatakan, saya setuju bahwa ini adalah masalah menimbang manfaat dan kelemahan, dan bahwa jika Anda tahu apa yang Anda lakukan, Anda pasti bisa melakukannya. Tapi ini bukan<?
pilihan yang baik.Tag pendek muncul kembali berkat Zend Framework yang mendorong " PHP sebagai bahasa templat " dalam konfigurasi MVC default mereka . Saya tidak mengerti apa perdebatannya, sebagian besar perangkat lunak yang akan Anda hasilkan selama hidup Anda akan beroperasi pada server yang Anda atau perusahaan Anda akan kendalikan. Selama Anda tetap konsisten, seharusnya tidak ada masalah.
MEMPERBARUI
Setelah melakukan sedikit kerja dengan Magento , yang menggunakan bentuk panjang. Akibatnya, saya beralih ke bentuk panjang:
lebih
Sepertinya sejumlah kecil pekerjaan untuk memastikan interoperabilitas.
sumber
Karena kebingungan itu dapat menghasilkan dengan deklarasi XML. Namun, banyak orang setuju dengan Anda.
Kekhawatiran tambahan adalah rasa sakit yang dihasilkannya untuk mengkodekan segala sesuatu dengan tag pendek hanya untuk mengetahui pada akhirnya bahwa server hosting terakhir dimatikan ...
sumber
<?='<?xml'
) atau dengan mengatakan "Anda tidak harus melakukan itu" tetapi itu tidak membuat fakta bahwa itu bisa terjadi menghilang.<?=
dengan<? echo
. banyak editor teks dapat dengan mudah menangani hal ini ke ribuan file sekaligus.Berikut ini adalah diagram alir luar biasa yang sama:
Sumber: pertanyaan serupa tentang Rekayasa Perangkat Lunak Stack Exchange
sumber
<?
tag pendek yang disebutkan dalam pertanyaan (meskipun menggunakan pengaturan konfigurasi yang sama pra-5.4)http://uk3.php.net/manual/en/language.basic-syntax.phpmode.php memiliki banyak saran, termasuk:
dan
dan
sumber
Jika ada yang masih memperhatikan ini ... Pada PHP 5.4.0 Alpha 1
<?=
selalu tersedia:http://php.net/releases/NEWS_5_4_0_alpha1.txt
Jadi sepertinya tag pendek (a) dapat diterima dan (b) di sini untuk tinggal. Setidaknya untuk saat ini ...
sumber
<?=
tidak dianggap sebagai tag pendek pada 5.4Tag pendek tidak diaktifkan secara default di beberapa webservers (host bersama, dll.), Sehingga portabilitas kode menjadi masalah jika Anda perlu pindah ke salah satunya.
Keterbacaan dapat menjadi masalah bagi sebagian orang. Banyak pengembang mungkin menemukan bahwa
<?php
menarik perhatian sebagai penanda yang lebih jelas dari awal blok kode daripada<?
ketika Anda memindai file, terutama jika Anda terjebak dengan basis kode dengan HTML dan PHP yang terjalin erat.sumber
<?= $var ?>
jauh lebih mudah dibaca daripada<?php echo $var ?>
<?
vs<?php
.Catatan: Mulai di PHP 5.4 tag pendek
<?=
,, sekarang selalu tersedia.sumber
Saya membaca halaman ini setelah mencari informasi tentang topik tersebut, dan saya merasa bahwa satu masalah besar belum disebutkan: kemalasan vs konsistensi. Tag "asli" untuk PHP adalah <? Php dan?>. Mengapa? Saya tidak begitu peduli. Mengapa Anda ingin menggunakan sesuatu yang lain ketika itu jelas untuk PHP? <% dan%> berarti ASP untuk saya, dan <script ..... berarti Javascript (dalam kebanyakan kasus). Jadi untuk konsistensi, pembelajaran cepat, portabilitas, dan kesederhanaan, mengapa tidak berpegang pada standar?
Di sisi lain saya setuju bahwa tag pendek di templat (dan HANYA di templat) tampaknya berguna, tetapi masalahnya adalah kita baru saja menghabiskan banyak waktu untuk membahasnya di sini, sehingga mungkin akan memakan waktu yang sangat lama untuk benar-benar terbuang sia-sia sebanyak itu mengetik tiga karakter tambahan "php" !!
Walaupun memiliki banyak opsi itu bagus, itu sama sekali tidak logis dan dapat menyebabkan masalah. Bayangkan jika setiap bahasa pemrograman diizinkan 4 atau lebih jenis tag: Javascript bisa menjadi <JS atau <script .... atau <% atau <? JS .... apakah itu membantu? Dalam kasus PHP urutan parsing cenderung mendukung hal-hal ini, tetapi bahasa ini dalam banyak hal tidak fleksibel: ia melempar pemberitahuan atau kesalahan pada sedikit inkonsistensi, namun tag pendek sering digunakan. Dan ketika tag pendek digunakan pada server yang tidak mendukungnya, perlu waktu yang sangat lama untuk mencari tahu apa yang salah karena dalam beberapa kasus tidak ada kesalahan yang diberikan.
Akhirnya, saya tidak berpikir bahwa tag pendek adalah masalah di sini: hanya ada dua jenis logis dari blok kode PHP - 1) kode PHP biasa, 2) gema template. Untuk yang pertama, saya sangat percaya bahwa hanya <? Php dan?> Harus diizinkan hanya untuk menjaga semuanya konsisten dan portabel. Untuk yang terakhir, metode <? = $ Var?> Jelek. Kenapa harus seperti ini? Mengapa tidak menambahkan sesuatu yang jauh lebih logis? <? php $ var?> Itu tidak akan melakukan apa-apa (dan hanya dalam kemungkinan paling jauh hal itu dapat bertentangan dengan sesuatu), dan itu dapat dengan mudah menggantikan sintaks <? = canggung. Atau jika itu masalah, mungkin mereka bisa menggunakan <? Php = $ var?> Sebagai gantinya dan tidak khawatir tentang inkonsistensi.
Pada titik di mana terdapat 4 opsi untuk tag buka dan tutup dan penambahan acak dari tag "echo" khusus, PHP mungkin juga memiliki bendera "tag buka / tutup kustom" di php.ini atau .htaccess. Dengan begitu desainer dapat memilih yang paling mereka sukai. Tetapi karena alasan yang jelas itu berlebihan. Jadi mengapa mengizinkan 4+ opsi?
sumber
Baik untuk menggunakannya saat Anda bekerja dengan kerangka kerja MVC atau CMS yang memiliki file tampilan terpisah.
Cepat, lebih sedikit kode, tidak membingungkan bagi para desainer. Pastikan konfigurasi server Anda memungkinkan menggunakannya.
sumber
Satu situasi yang sedikit berbeda adalah ketika mengembangkan aplikasi CodeIgniter . CodeIgniter tampaknya menggunakan shorttag setiap kali PHP digunakan dalam templat / tampilan, jika tidak dengan model dan pengontrol, selalu menggunakan tag yang panjang. Ini bukan aturan yang keras dan cepat dalam kerangka, tetapi untuk sebagian besar kerangka dan banyak sumber dari penggunaan lain mengikuti konvensi ini.
Dua sen saya? Jika Anda tidak pernah berencana menjalankan kode di tempat lain, maka gunakan jika Anda mau. Saya lebih suka tidak perlu melakukan pencarian besar-besaran dan mengganti ketika saya menyadari itu adalah ide yang bodoh.
sumber
<?
dinonaktifkan secara default di versi yang lebih baru. Anda dapat mengaktifkannya seperti yang dijelaskan dalam Mengaktifkan Tag Pendek dalam PHP .sumber
Orang-orang IMHO yang menggunakan tag pendek sering lupa melarikan diri dari apa pun yang mereka gema. Alangkah baiknya memiliki mesin templat yang lolos secara default. Saya percaya Rob A menulis hack cepat untuk menghindari tag pendek di aplikasi Zend Frameworks. Jika Anda menyukai tag pendek karena membuat PHP lebih mudah dibaca. Lalu mungkinkah Smarty menjadi pilihan yang lebih baik?
bagi saya itu terlihat lebih baik daripada
sumber
Kita harus bertanya apa gunanya menggunakan tag pendek.
Lebih cepat mengetik
MDCore berkata:
Ya itu. Anda menyimpan harus mengetik 7 karakter * X kali sepanjang skrip Anda.
Namun, ketika sebuah skrip membutuhkan waktu satu jam, atau 10 jam, atau lebih, untuk mendesain, mengembangkan, dan menulis, seberapa relevan beberapa detik waktu tidak mengetik 7 karakter di sana-sini selama durasi skrip?
Dibandingkan dengan potensi untuk beberapa inti, atau semua, skrip Anda tidak berfungsi jika tag pendek tidak diaktifkan, atau aktif tetapi pembaruan atau seseorang yang mengubah konfigurasi file / server ini menghentikannya berfungsi, potensi lain.
Manfaat kecil yang Anda peroleh tidak mendekati beratnya masalah yang mungkin terjadi, yaitu situs Anda tidak berfungsi, atau lebih buruk, hanya sebagian saja yang tidak berfungsi dan dengan demikian sakit kepala untuk diselesaikan.
Lebih mudah dibaca
Ini tergantung pada keakraban .
Saya selalu melihat dan menggunakan
<?php echo
. Jadi walaupun<?=
tidak sulit untuk dibaca, itu tidak akrab bagi saya dan dengan demikian tidak mudah dibaca .Dan dengan split pengembang front end / back end (seperti halnya dengan sebagian besar perusahaan) akankah pengembang front end yang bekerja pada templat-templat tersebut menjadi lebih dikenal mengetahui
<?=
sama dengan "PHP tag terbuka dan gema"?Saya akan mengatakan sebagian besar akan lebih nyaman dengan yang lebih logis. Artinya, tag terbuka PHP yang jelas dan kemudian apa yang terjadi "echo" -
<?php echo
.Masalah penilaian risiko = seluruh skrip situs atau inti gagal berfungsi;
Potensi masalah sangat rendah + keparahan hasil sangat tinggi = risiko tinggi
Kesimpulan
Anda menghemat beberapa detik di sana-sini tidak harus mengetik beberapa karakter, tetapi berisiko banyak untuk itu, dan juga kemungkinan kehilangan keterbacaan sebagai hasilnya.
Coders depan atau belakang yang lebih akrab dengan
<?=
lebih cenderung untuk mengerti<?php echo
, karena mereka hal-hal standar PHP -<?php
tag terbuka standar dan "gema" yang sangat terkenal.(Bahkan front end coders harus tahu "echo" atau mereka tidak akan bekerja pada kode apa pun yang dilayani oleh suatu kerangka kerja).
Sedangkan sebaliknya tidak mungkin, seseorang tidak mungkin secara logis menyimpulkan bahwa tanda sama dengan tag pendek PHP adalah "echo".
sumber
<?=
akan<?=
lebih mudah membaca daripada orang yang biasa membaca<?php echo
membaca<?php echo
.<?php
melihat bahwa di seluruh kode berkali-kali lebih akrab bagi saya daripada<?=
- keakraban membuat segalanya lebih mudah - itu belum tentu lebih baik.<?=
akan membaca<?=
lebih baik daripada orang yang membaca<?php echo
membaca<?php echo
. Itu berarti jika kita memiliki dua salinan orang X yang identik, dan mengubahnya hanya dalam aspek di mana satu digunakan untuk membaca<?=
, dan yang lainnya digunakan untuk membaca<?php echo
, Salinan pertama dapat mencapai nilai keterbacaanx
saat membaca menggunakan sintaks yang diinginkannya, sedangkan salinan kedua dapat mencapai nilai keterbacaany
saat membaca sintaks yang diinginkan, di manax >= y
.Mari kita hadapi itu. PHP jelek sekali tanpa tag pendek.
Anda dapat mengaktifkannya dalam
.htaccess
file jika Anda tidak dapat mengaksesphp.ini
:sumber
Untuk menghindari masalah portabilitas, mulailah tag PHP dengan
<?php
dan seandainya file PHP Anda murni PHP, tanpa HTML, Anda tidak perlu menggunakan tag penutup.sumber
Dengan mengatakan itu, seorang teman saya mengatakan ini, untuk mendukung tag asp-style alternatif terstandarisasi , seperti
<%
bukannya<?
, yang merupakan pengaturan di php.ini disebut asp_tags. Inilah alasannya:Kedengarannya bagus untuk saya, tapi saya tidak berpikir ada di antara kita yang bisa mengitari gerobak di sekitar penyebab ini. Sementara itu, saya akan tetap berpegang teguh
<?php
.sumber
Saya pikir layak menyebutkan bahwa pada PHP 7:
<% … %>
hilang<? … ?>
masih tersedia jikashort_open_tag
disetel ke true. Ini standarnya.<?=… ?>
yang selalu diaktifkan, terlepas darishort_open_tag
pengaturan.Riddance bagus untuk yang pertama, karena mengganggu bahasa lain.
Sekarang tidak ada alasan untuk tidak menggunakan tag cetak pendek, selain dari preferensi pribadi.
Tentu saja, jika Anda menulis kode agar kompatibel dengan versi lama PHP 5, Anda harus tetap berpegang pada aturan lama, tetapi ingat bahwa apa pun sebelum PHP 5.6 sekarang tidak didukung.
Lihat: https://secure.php.net/manual/en/language.basic-syntax.phptags.php
sumber
Jika Anda peduli tentang XSS maka Anda harus menggunakan
<?= htmlspecialchars(…) ?>
sebagian besar waktu, jadi tag pendek tidak membuat perbedaan besar.Bahkan jika Anda mempersingkat
echo htmlspecialchars()
untukh()
, itu masih masalah yang Anda harus ingat untuk menambahkannya hampir setiap waktu (dan mencoba untuk melacak data yang pra-melarikan diri, yang tidak lolos-tapi-tidak berbahaya hanya membuat kesalahan lebih mungkin).Saya menggunakan mesin templating yang aman secara default dan menulis
<?php
tag untuk saya.sumber
<?php ?>
jauh lebih baik untuk digunakan karena pengembang bahasa pemrograman ini telah secara besar-besaran memperbarui bahasa inti mereka. Anda dapat melihat perbedaan antara tag pendek dan tag panjang.Tag pendek akan disorot sebagai merah terang sedangkan yang lebih panjang disorot lebih gelap!
Namun, menggemakan sesuatu, misalnya:
<?=$variable;?>
baik-baik saja. Tetapi lebih suka tag yang lebih panjang.<?php echo $variable;?>
sumber
Konversi
<?
(tanpa spasi tambahan) menjadi<?php
(dengan spasi tambahan):Konversi
<?
(dengan ruang trailing) ke<?php
(mempertahankan ruang trailing):sumber
Tag pendek selalu tersedia di php. Jadi Anda tidak perlu mengulangi pernyataan pertama dalam skrip Anda
contoh:
Tiba-tiba Anda perlu menggunakan untuk satu skrip php maka Anda dapat menggunakannya. contoh:
sumber
Pada 2019 saya tidak setuju dengan jawaban tertentu di sini. Saya merekomendasikan untuk menggunakan tag panjang
atau tag gema pendek
Alasan: Mereka direkomendasikan oleh standar pengkodean dasar PSR-1
Tag pendek lain seperti
<? /* code goes here */ ?>
tidak disarankan.Spesifikasi mengatakan:
sumber
3 tag tersedia di php:
<?php ?>
tidak perlu direktifasi yang dikonfigurasi<? ?>
tersedia jika opsi short_open_tag di php.ini aktif<?=
karena php 5.4.0 selalu tersediadari php 7.0.0 asp dan tag skrip dihapus
sumber
Tidak, dan mereka dihapus oleh PHP 6 jadi jika Anda menghargai umur panjang kode, jangan gunakan atau
<% ... %>
tag.sumber