แท็กปิด (?>) ในไฟล์ PHP?


17

บางคนสาบานด้วยการปิดไฟล์ PHP ของพวกเขาด้วย?>บางคนบอกว่ามันเหมาะที่จะทิ้งมันไว้

ฉันรู้ว่ามันไม่จำเป็นที่จะมีอยู่ที่นั่นฉันแค่สงสัยว่าข้อดีและข้อเสียของการทำเช่นนี้คืออะไรและการปฏิบัติที่ดีที่สุดคืออะไร



บางคนคิดว่าวลี "เพิ่มประสิทธิภาพมากขึ้น" มีวัตถุประสงค์เพื่อหมายถึง "จะทำงานได้เร็วขึ้น" ผู้พูด (ภาษาแรกไม่ใช่ภาษาอังกฤษ) อาจมีความตั้งใจมากกว่า "ดีกว่า" หรือ "แนวปฏิบัติที่ดีกว่า"
Scott C Wilson

คำตอบ:


27

มันไม่ได้เป็นเรื่องของประสิทธิภาพมากนักการแยกวิเคราะห์ trailing ?>นั้นเล็กน้อยและจะไม่สร้างความแตกต่างที่น่าสังเกตเลยเว้นแต่คุณจะใส่ไฟล์นับล้านต่อวินาที

IIRC, php.net ไม่แนะนำให้เพิ่ม?>และเหตุผลมีดังนี้:

  • มันไม่จำเป็น
  • มันง่ายที่จะเพิ่มช่องว่างที่สำคัญโดยไม่ตั้งใจหลังจาก?>ซึ่งจะถูกส่งออกไปยังลูกค้าซึ่งจะนำไปสู่ข้อผิดพลาด 'ส่วนหัวส่งแล้ว' ข้อผิดพลาด (สิ่งนี้เกิดขึ้นเมื่อไฟล์ที่รวมมีช่องว่างและคุณพยายามตั้งค่าส่วนหัวหลังจาก รวมถึงไฟล์นั้น)

จากคำตอบที่นี่ (โดยเฉพาะอย่างยิ่งเกี่ยวกับช่องว่างที่ไม่ต้องการทำให้เกิด "ส่วนหัวที่ส่งไปแล้ว" ข้อผิดพลาด) ฉันได้เปลี่ยนนิสัยของฉันอย่างเคร่งครัดรวมถึง?> ในตอนท้ายของไฟล์ PHP ฉันสังเกตว่าเมื่อฉันสร้างไฟล์ใหม่ด้วย PHPS รูปแบบเทมเพลตเพิ่งแทรก <? php โดยไม่มีแท็กปิดและคิดว่ามันเป็นแค่การเขียนโค้ดที่เลอะเทอะ ตอนนี้ฉันรู้ดีขึ้นแล้ว
tcrosley

เหตุผลที่แม่นยำ - "ส่วนหัวที่ส่งไปแล้ว" - เป็นเหตุผลที่นายจ้างของฉันห้ามอย่างเด็ดขาด (เว็บพอร์ทัลขนาดใหญ่) มันเป็นสิ่งหนึ่งที่คุณลืมมันในตอนท้ายของไฟล์ที่คุณเพิ่งเขียน อีกอย่างหนึ่งถ้าคุณแก้ไขรายการไลบรารีที่มี 3 รวมถึงตัวแก้ไขข้อความของคุณจะแทรกช่องว่างโดยที่คุณไม่รู้ตัวและทันใดนั้นพอร์ทัลชิ้นหนึ่งที่อาคาร 2 แห่งวิ่งหนีก็หยุดทำงาน ต้นไม้แห่งการรวมไฟล์มักจะมีมากกว่า 100 ไฟล์การค้นหาข้อบกพร่องจะกลายเป็นการออกกำลังกายด้วยความอดทน คาดว่า "ขอบคุณอย่างสุดซึ้ง" จะมาเยี่ยมสัปดาห์ต่อมาเนื่องจากพบข้อผิดพลาดและย้อนกลับมาหาคุณ
เอสเอฟ

1
PHP ส่งพื้นที่สีขาวหลังจากแท็กปิดเป็นอีกตัวอย่างหนึ่งของการตัดสินใจทางภาษาที่ไม่ดี
user949300

12

ไม่พวกเขาคิดผิด

?>เป็นตัวเลือกใน PHP เมื่อสิ้นสุดไฟล์ และคุณจะพบเหตุผลที่ดีสำหรับสิ่งนี้ สิ่งที่สำคัญที่สุดคือพื้นที่ว่างท้ายไฟล์จะไม่ป้องกันคุณจากการส่งส่วนหัว นี่เป็นข้อผิดพลาดที่ยากที่จะสังเกตเห็นเพราะคุณสามารถหาได้จากทุกที่

วิธีปกติในการทำคือใส่แท็กปิดเมื่อ PHP ผสมกับ HTML และไม่วางไว้สำหรับไฟล์ PHP ล้วนๆ มันเป็นมาตรฐานการเข้ารหัสจากกรอบ Zendและอื่น ๆ อีกมากมาย

การเพิ่มประสิทธิภาพหมายถึงการที่รหัสทำงานได้เร็วขึ้น มันง่ายที่จะพิสูจน์ว่าผิด โปรไฟล์รหัสและคิดออกว่าพวกเขาจะบอกคุณพล่าม


4

ฉันคิดว่าแนะนำให้กับมือใหม่เพื่อหลีกเลี่ยงการเพิ่มเพื่อไม่ให้ส่งตัวอักษรขึ้นบรรทัดใหม่พิเศษโดยไม่ตั้งใจ เนื่องจากมันไม่จำเป็นที่จะต้องมีอย่างที่คุณพูดถึงฉันคิดว่าการใช้เหตุผลโดยทั่วไปนั้นดีกว่าที่จะทิ้งมันไว้เพื่อหลีกเลี่ยงข้อผิดพลาด

ฉันไม่คิดว่าจะมี "การเพิ่มประสิทธิภาพ" เกี่ยวข้องกับมัน

ฉันจะชี้ให้คุณที่นี่: /programming/4410704/php-closing-tagและที่นี่: /programming/3219383/why-do-some-scripts-omit-the -closing-PHP แท็ก


1
มือใหม่หรือไม่ ... ไม่มีเหตุผลอะไรเลย (ยกเว้นกรณีโรค OCD) ที่จะมีพวกเขา
Mchl

@Mchl ฉันจะชี้ให้เห็นว่าสาเหตุของการออกนอกค่อนข้างน่ารำคาญและในท้ายที่สุดมันก็ลงมาตั้งค่าของโปรแกรมเมอร์และไม่ได้จริงๆปัญหาโรคของ ...
เคนเน็ ธ

1
ฉันประจบประแจงเมื่อใดก็ตามที่ฉันเห็น?>ในไฟล์ที่มี PHP บริสุทธิ์
Caffeinated Aviator

@ เคนเน็ ธ : หากพวกเขาเล็กน้อย - ฉันไม่เห็นพวกเขา ส่วน OCD มีความหมายว่าเป็นเรื่องตลก
Mchl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.