แนวทางปฏิบัติที่ดีที่สุดสำหรับ PHP


11

เมื่อทำเทมเพลตเช่น single.php และคุณมี php อยู่ใน html สิ่งที่ดีที่สุดคือ:

  1. เริ่ม + หยุด PHP หรือไม่ ตัวอย่างเช่น

     <h1 class="post-tilte"><?php the_title(); ?></h1>
     <p class="post-content"><?php the_content();?></p>

หรือ

  1. สะท้อน HTML และ Escape PHP หรือไม่ ตัวอย่างเช่น -

    <?php echo '<h1 class="post-title">' . get_the_title() . '</h1>
    <p class="post-content"' . get_the_content() . '</p>

ฉันไม่มีตัวเลือกล่วงหน้าและพบว่าตัวเองกำลังทำทั้งสองอยากรู้อยากเห็นความคิดบางอย่าง


6
วิธีแรกคือการออกแบบที่เป็นมิตรมากขึ้น ดังนั้นเมื่ออยู่ในแม่แบบที่มี HTML จำนวนมากและมี PHP เล็กน้อยให้ทำสิ่งแรก อันที่สองมีประโยชน์เมื่อมี PHP จำนวนมากและ HTML เล็กน้อย ทำในfunctions.phpหรือปลั๊กอินอื่น ๆ
Fayaz

3
คุณลืมไปแล้วprintf( '<h1 class="post-title">%s</h1>', get_the_title() );
Howdy_McGee

คำตอบ:


10

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

สำหรับการรวมในปลั๊กอินโค้ดที่มีตรรกะมากกว่าและโฟลว์เป็นตัวอย่างที่สองที่ง่ายต่อการนำไปใช้ หัวข้อหลักคือ php ไม่ใช่มาร์กอัปและควรปรากฏในแหล่งที่มา นี่เป็นจุดที่ควรคำนึงถึงในการไม่รวมมาร์กอัพนี้ในไฟล์เทมเพลตและแยกมาร์กอัพออกจากตรรกะ


1
ข้อดีอีกประการของอันแรกคือผู้แก้ไขบางคนจะเน้นการเปิดหรือปิดแท็กที่เกี่ยวข้องหากคุณวางเคอร์เซอร์ไว้ในนั้น
MonkeyZeus

8

เช่นเดียวกับข้อมูลเพิ่มเติม WordPress มีคู่มือสำหรับ PHP & HTML เกี่ยวกับวิธีปฏิบัติที่ดีที่สุดเกี่ยวกับมาตรฐานการเข้ารหัสเช่นเดียวกับ CSS, JavaScript และการเข้าถึง คุณอาจพบว่ามีประโยชน์สำหรับการเจาะลึกเรื่องนี้


5

ดังที่อธิบายไว้ในคำตอบข้างต้นวิธีแรกคือวิธีการออกแบบที่เป็นมิตรและวิธีที่สองอาจจะเหมาะสมในกรณีของปลั๊กอินและรหัส php ที่ซับซ้อนซึ่งจำนวนแท็ก html นั้นมีเพียงไม่กี่ตัวเท่านั้น

แต่แท็กแม่แบบ WordPress ส่วนใหญ่มีbeforeและafterพารามิเตอร์และเหมาะสมกว่าที่จะใช้รหัส html ของคุณภายในการเรียกใช้ฟังก์ชัน

ตัวอย่างเช่นในกรณีของthe_titleมันมีสามพารามิเตอร์

the_title( $before, $after, $echo );

คุณสามารถส่ง html ของคุณไปยังพารามิเตอร์ก่อนและหลังเช่นด้านล่าง

the_title( '<h2 class="title">', '</h2>', true );

ข้อดีของวิธีนี้คือ

  • นักออกแบบที่เป็นมิตร
  • จะไม่พิมพ์แท็ก html หากชื่อว่างเปล่า
  • สามารถใช้ในรหัส php ที่ซับซ้อนเช่นเดียวกับในไฟล์เทมเพลตอย่างง่าย

0

วิธีแรกดีกว่าเพราะ:

  • มันแยกเค้าโครง HTML คงที่ออกจากเนื้อหาแบบไดนามิกอย่างชัดเจน
  • อ่านง่ายกว่า
  • ได้รับการสนับสนุนที่ดีขึ้นจากการเน้นไวยากรณ์ในโปรแกรมแก้ไขส่วนใหญ่เนื่องจากแอตทริบิวต์ html แบบ in-string มักไม่ได้รับการยอมรับ
  • มันป้องกันคุณจากการขัดขวาง HTML และ PHP ได้ง่ายเกินไป

เนื่องจากเหตุผลที่กล่าวข้างต้นวิธีแรกนำไปสู่รหัสที่ง่ายต่อการเข้าใจและง่ายต่อการบำรุงรักษา

จากประสบการณ์ของฉันในบางสถานการณ์ฉันสามารถใช้วิธีที่สองได้สะดวกกว่า อย่างไรก็ตามนั่นมักจะเกิดจากการออกแบบที่อ่อนแอ (ซอฟต์แวร์) และควรมองว่าเป็นสัญญาณเตือน


0

ตัวอย่างโค้ดของคุณนั้นเป็นเพียงเล็กน้อยเพราะมันแสดงเพียงสองบรรทัดของโค้ด แต่ฉันเชื่อว่าคำตอบโดยรวมนั้นค่อนข้างเป็นสถานการณ์ หากคุณใช้สาย PHP ภายในบล็อก HTML ให้ใช้วิธีแรก หากคุณใช้บรรทัด HTML ภายในบล็อก PHP ให้ไปกับบรรทัดที่สอง

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