PHP dosyalarında etiket (?>) Kapatılsın mı?


17

Bazı insanlar PHP dosyalarını kapatarak yemin ediyor ?>, bazıları bunu bırakmak için daha optimize edildiğini söylüyor.

Orada olmanın gerekli olmadığını biliyorum, sadece artılarını ve eksilerini ne yaptığını ve en iyi uygulamanın ne olduğunu merak ediyorum.



Bazı insanlar "daha optimize edilmiş" ifadesinin "daha hızlı çalışacağını" ifade etmeyi amaçladığını varsaymaktadır. Konuşmacı (ilk dili İngilizce olmayabilir) daha "daha uygun" veya "daha iyi bir uygulama" gibi bir şey düşünmüş olabilir.
Scott C Wilson

Yanıtlar:


27

Bu bir performans meselesi değil - sondaki ayrıştırma ?>önemsizdir ve saniyede milyon dosya eklemediğiniz sürece hiç fark edilmeyecektir.

IIRC, php.net, eklememeyi önerir ?>ve nedenleri böyle bir şeye gider:

  • gereksiz
  • yanlışlıkla ?>istemciye gönderilecek önemli boşluk eklemek kolaydır , bu da 'üstbilgiler zaten gönderilmiştir' hatalarına neden olabilir (bu, dahil edilen bir dosya boşluk içeriyorsa ve bu dosya dahil)

Buradaki yanıtlara dayanarak (özellikle "zaten gönderilen başlıklar" hatalarına neden olan boş istenmeyen boşluklarla ilgili olarak), bir PHP dosyasının sonunda bir?> Dahil etme alışkanlığımı değiştirdim. PHPStorm ile yeni bir dosya oluşturduğumda, şablonun?? Kapanış etiketi olmadan bir <? Php eklediğini fark ettim ve sadece özensiz kodlama olduğunu düşündüm. Şimdi daha iyi biliyorum.
tcrosley

Bu kesin neden - "zaten gönderilen başlıklar" - bunun işverenim (büyük bir web portalı) tarafından titizlikle yasaklanmasının nedeniydi. Yeni yazdığınız bir dosyanın sonunda unutmanız bir şeydir. Bir derinlik içeren bir kütüphane girişini düzenlerseniz, metin düzenleyiciniz boşlukları bilmeden ekler ve aniden 2 bina ötede çalışan bir portal parçası çalışmayı durdurur. İçerir ağacı genellikle 100+ dosyadır, hatayı bulmak sabırla bir egzersiz haline gelir. Hata bulunduğunda ve size geri döndüğünde haftalar sonra "derin şükran" ziyaretini bekleyin.
SF.

1
Kapatma etiketinden sonra boşluk bırakan PHP, zayıf dil kararlarının başka bir örneğidir.
user949300

12

Hayır, yanılıyorlar.

?>bir dosyanın sonunda PHP'de isteğe bağlıdır. Bunun için iyi bir neden bulacaksınız. En önemlisi, dosyanın sonundaki boş alanın başlık göndermenizi engellememesidir. Bu herhangi bir dosyada herhangi bir yerde bulabileceğiniz için fark edilmesi zor bir hatadır.

PHP'nin HTML ile karıştırıldığı zaman bir kapanış etiketi koymak ve onu saf PHP dosyaları için koymak değildir. Hatta ZEND çerçevesinden bir kodlama standardı ve diğerleri.

Optimize edilmiş kodun daha hızlı çalıştığı anlamına gelir. Bu onların yanlış olduğunu kanıtlamak kolaydır. Kodu profili ve size saçmalık söylediklerini anlayın.


4

Yeni başlayanlara, ek satırsonu karakterlerinin yanlışlıkla gönderilmesine neden olmaması için eklemekten kaçınmaları gerektiğini düşünüyorum. Bahsettiğiniz gibi olması zorunlu olmadığından, genel akıl yürütmenin, hataları önlemek için daha iyi bırakması olduğunu düşünüyorum.

Ben onunla ilgili herhangi bir "optimizasyon" olduğunu sanmıyorum.

Sizi buraya işaret ederim: /programming/4410704/php-closing-tag ve burada: /programming/3219383/why-do-some-scripts-omit-the Kapanma-php-tag


1
yeni başlayanlar ya da değil ... Onlara sahip
olmanız

@Mchl Ayrılma nedenlerinin oldukça önemsiz olduğuna ve sonunda programcının tercihine ve gerçekten bir OKB sorununa gelmediğine dikkat çekerim ...
Kenneth

1
?>Saf PHP içeren dosyalarda gördüğüm her zaman küfrediyorum .
Kafeinli Havacı

@Kenneth: Eğer önemsiz iseler - onları göremiyorum. OKB kısmı şaka amaçlıydı.
Mchl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.