ในหลาย ๆ ธีมที่ฉันเห็น (รวมถึง TwentyEleven) และในตัวอย่างที่ฉันพบทางออนไลน์เมื่อสร้างfunctions.php
ไฟล์สำหรับธีมฟังก์ชั่นทั้งหมดจะประกาศในขอบเขตทั่วโลก เพื่อชี้แจงนี่คือลักษณะของไฟล์ฟังก์ชั่นทั่วไป:
function my_theme_do_foo() { // ... }
function my_theme_do_bar() { // ... }
add_action( 'foo_hook', 'my_theme_do_foo' );
สำหรับฉันมันดูเหมือนว่าสิ่งต่าง ๆ อาจจะ "ห่อหุ้ม" ดีขึ้นเล็กน้อยหากใช้คลาส
class MyTheme {
function do_foo() { // ... }
function do_bar() { // ... }
}
$my_theme = new MyTheme();
add_action( 'foo_hook', array( &$my_theme, 'do_foo' ) );
ข้อดีของวิธีการที่สอง (ในสายตาที่อ่อนน้อมถ่อมตนของฉัน):
- ชื่อฟังก์ชั่นที่สั้นกว่า
- การเข้าถึงตัวแปรอินสแตนซ์ (IMO ข้อได้เปรียบที่ใหญ่ที่สุด)
- ไม่มีฟังก์ชั่นระดับโลก
ข้อเสีย:
- ชื่อคลาสอาจทำให้เกิดข้อขัดแย้งได้
- ไม่ชัดเจนว่า "ปรับแต่ง" ด้วยธีมลูก (จะต้องขยายคลาสพาเรนต์)
- ชุดรูปแบบส่วนใหญ่ยังไม่ได้ทำเช่นนี้ดังนั้นคุณจะรักษาแนวโน้ม
ฉันอาจจะมองเห็นบางสิ่ง แต่ฉันสงสัยว่าทำไมไม่ใช้แนวทาง OOP มันรู้สึกว่า "สะอาด" สำหรับฉันถ้ามีอะไร บางทีฉันเข้าใจผิด?
ฉันค่อนข้างใหม่ในการพัฒนาธีม WordPress ดังนั้นโปรดยกโทษให้ฉันถ้านี่เป็นความรู้ทั่วไปในชุมชน WP :) แค่พยายามเรียนรู้ว่าทำไมสิ่งต่าง ๆ ถึงเป็นแบบนั้น