เพื่อปิดหรือไม่ปิด php


14

ฉันได้อ่านแล้วว่าเป็นคำแนะนำ (โดยเฉพาะกับ php 7) เพื่อไม่ให้ปิดไฟล์ php ด้วย ?>

ไฟล์ WP php หลายไฟล์ของฉันสิ้นสุดดังนี้:

<?php get_sidebar(); ?>
<?php get_footer(); ?>

ฉันควรลบแท็กปิดและมีอะไรเช่นนี้

<?php get_sidebar(); ?>
<?php get_footer(); 

ในตอนท้ายของไฟล์ของฉัน?


2
หากไม่มีอะไรหลังจากแท็ก php ที่ยังไม่ปิดของคุณมันก็โอเคอย่างสมบูรณ์เพราะฉันสังเกตเห็นในหลาย ๆ เฟรมอย่าง Laravel พวกเขาจะไม่ปิดแท็ก php ที่ส่วนท้ายของไฟล์ รูปแบบและไม่ได้ปิดแท็ก php ในตอนท้ายดังนั้นฉันคิดว่าเราควรทำตามสไตล์การเข้ารหัสของ WordPress และไม่ปิดพวกเขา
Amirmasoud

1
อาจเป็นตั๋วที่เกี่ยวข้องกับ trac: # 10633
สเวน

คำตอบ:


19

ใช่โปรดหลีกเลี่ยงการปิดแท็ก PHP ที่ส่วนท้ายของไฟล์ไม่ใช่เฉพาะกับ PHP 7 แต่ใช้กับ PHP 5 ด้วย

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

ฉันเดาว่าคุณเคยเจอข้อความเช่นนี้

ไม่สามารถแก้ไขข้อมูลส่วนหัว - ส่วนหัวที่ส่งไปแล้ว (เอาต์พุตเริ่มต้นที่ ... ) ใน ... ที่ออนไลน์ ...

การปิด?>ท้ายไฟล์อาจเป็นสาเหตุ


1
ฉันเชื่อว่านี่เป็นคำตอบที่ถูกต้อง แม้แต่ขีดเส้นใต้ที่เดิมฉันได้รับเทมเพลตของฉันได้ลบแท็กปิดในการอัปเดตล่าสุด
IXN

@IXN นี้ถูกต้องหากไฟล์ทั้งหมดเป็น PHP และดังนั้นจึงประกอบด้วยบล็อกโค้ด PHP เดียว (บล็อกโค้ด PHP ถูกปิดโดยปริยายที่ท้ายไฟล์) อย่างไรก็ตามหากคุณมีบล็อกโค้ด PHP หลายรายการและกำลังผสม HTML และ PHP ตามที่ระบุโดยตัวอย่างในคำถามของคุณคุณควรปิดบล็อกโค้ด PHP อย่างชัดเจนเนื่องจาก TheDeadMedic ระบุไว้ในคำตอบของเขา
MrWhite

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

เหตุผลหลักสำหรับการละเว้น (หรือรวมถึง) แท็ก PHP ปิดคือการหลีกเลี่ยงการแนะนำข้อผิดพลาดโง่ในระหว่างการพัฒนา ดังที่ได้กล่าวมาแล้วสำหรับไฟล์ PHP ทั้งหมดนี้สามารถหลีกเลี่ยงการส่งออกโดยไม่ตั้งใจทำให้เกิดข้อผิดพลาด สำหรับไฟล์ที่ผสม HTML output และ PHP แล้วจะไม่สามารถเกิดข้อผิดพลาดได้ อย่างไรก็ตามการละเลยการปิดแท็ก PHP ในกรณีที่สองนี้มีโอกาสที่จะแนะนำข้อผิดพลาดเนื่องจากตอนนี้คุณต้องจำไว้ว่าต้องปิดแท็ก PHP อย่างชัดเจนก่อนที่จะเพิ่มเนื้อหา HTML ต่อท้าย - นี่ไม่ใช่สิ่งที่คุณทำในไฟล์รหัส PHP ทั้งหมด
MrWhite

หากคุณมองผ่านแหล่ง WP คุณจะเห็นว่า (ส่วนใหญ่) ของ PHP รวมถึงละเว้นแท็ก PHP ต่อท้าย อย่างไรก็ตามแฟ้มแม่แบบ (ที่ผสม HTML และ PHP บล็อก code) เสมอรวมถึงแท็ก PHP ปิด
MrWhite

11

จากตัวอย่างเฉพาะของคุณฉันจะเก็บแท็กปิดเช่นการเรียกฟังก์ชันหนึ่งบรรทัดภายในเทมเพลต มีความสอดคล้องกันและช่วยให้เกิดความชัดเจน (เช่นเดียวกับ WordPress แนะนำให้ใช้จุลภาคต่อท้ายสำหรับอาร์เรย์ ) - มิฉะนั้นให้จินตนาการว่าผู้ที่ไม่ใช่นักพัฒนาเลือกไฟล์ของคุณและเริ่มเพิ่มไฟล์:

<?php get_footer();

<div>What the hell am I doing wrong?</div>

อย่างไรก็ตามสำหรับไฟล์อื่น ๆ ทั้งหมด (ฟังก์ชั่นรวมถึงอื่น ๆ ) คำแนะนำเป็นความคิดที่ดีที่สุด:

<?php // Start of file

class MY_Class {
    function just_do_it() {
    }
}

// Bye bye closing tag

ฉันพบว่ามันสะอาดกว่าและอย่างที่คนอื่นพูดถึงแล้วไม่มีความเสี่ยงของ "หัวที่ส่งไปแล้ว"

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