ฉันสามารถเข้าใจความสับสนของคุณตามตัวอย่างที่คุณให้ไว้ นั่นเป็นวิธีที่ไม่ดีในการใช้คลาส ... และเนื่องจากมีการใช้คลาสไม่ได้สร้างระบบ OOP
ในกรณีของไฮบริดพวกเขากำลังใช้คลาสเพื่อกำหนดฟังก์ชันของพวกเขา พิจารณาไฮบริดเป็นเฟรมเวิร์กชุดรูปแบบซึ่งทำเพื่อให้ธีมลูกสามารถใช้ชื่อฟังก์ชั่นได้อีกครั้งโดยที่ผู้พัฒนาไม่ต้องกังวลเกี่ยวกับการชนกันของชื่อ ในหลายกรณีกรอบงานชุดรูปแบบ (ชุดรูปแบบหลัก) นั้นซับซ้อนนักพัฒนาชุดรูปแบบเด็กจำนวนมากจะไม่เข้าใจสิ่งที่เกิดขึ้นภายใต้ประทุน
ถ้าไฮบริดไม่ได้ใช้โครงสร้างคลาสผู้พัฒนาชุดรูปแบบเด็กจะต้องทราบว่าการเรียกใช้ฟังก์ชันที่มีอยู่ทั้งหมดคืออะไรเพื่อหลีกเลี่ยงการใช้ชื่อซ้ำ และใช่คุณสามารถนำหน้าฟังก์ชั่นทั้งหมดของคุณด้วยกระสุนที่ไม่ซ้ำกัน แต่นั่นทำให้โค้ดยากที่จะอ่านยากที่จะรักษาและไม่สามารถนำมาใช้ซ้ำได้โดยเนื้อแท้หากคุณพัฒนาระบบเพิ่มเติมที่ต้องการใช้ประโยชน์จากฟังก์ชันเดียวกัน
เพื่อตอบคำถามของคุณ
WTF? จุดประสงค์ของการทำสิ่งนี้คืออะไร? เห็นได้ชัดว่าคุณจะไม่ได้ใช้อินสแตนซ์ของธีมเดียวกันสองรายการขึ้นไปในเวลาเดียวกัน
ไม่คุณจะไม่ใช้อินสแตนซ์ของธีมเดียวกันสองรายการขึ้นไป แต่ชอบพูดว่าคิดของโครงสร้างชั้นในกรณีนี้เป็นnamespacingฟังก์ชั่นที่ไม่ได้สร้างตัวอย่างวัตถุแบบดั้งเดิม การรวมทุกอย่างเข้าด้วยกันในชั้นเรียนและยกตัวอย่างเพื่อเรียกใช้เมธอด ( myClass->method();
) หรือวิธีการโทรโดยตรง ( myClass::method();
) เป็นวิธีที่สะอาดมากในการกำหนดชื่อสิ่งต่าง ๆ ในรูปแบบที่อ่านได้และใช้ซ้ำได้
แน่นอนว่าคุณสามารถใช้บางสิ่งบางอย่างmyClass_method();
แทนได้เสมอ แต่ถ้าคุณต้องการใช้รหัสนี้อีกครั้งในธีมอื่นในปลั๊กอินหรือในกรอบงานแอนเทอร์โร่คุณต้องย้อนกลับไปและเปลี่ยนคำนำหน้าทั้งหมดของคุณ การรักษาทุกสิ่งในชั้นเรียนนั้นสะอาดและช่วยให้คุณพัฒนาและปรับใช้งานได้รวดเร็วยิ่งขึ้น
สมมติว่าปลั๊กอินทำสิ่งนี้สำหรับเนมสเปซ (ซึ่งไร้สาระ) แต่ธีมของข้อแก้ตัวคืออะไร ฉันพลาดอะไรไปรึเปล่า?
ในสถานการณ์ส่วนใหญ่ฉันเห็นด้วยกับคุณ อย่างไรก็ตามเสียงข้างมากนั้นกำลังจางหายไปอย่างรวดเร็ว ฉันโฮสต์หลายไซต์ในการติดตั้ง MultiSite ที่ใช้ชุดรูปแบบของชุดรูปแบบเดียวกัน แทนที่จะสร้างธีมเดียวกันซ้ำแล้วซ้ำอีกด้วยความแตกต่างเล็กน้อยฉันมี "คลาส" เดียวสำหรับธีมหลักและธีมลูกทั้งหมดขยายคลาสนั้น สิ่งนี้ทำให้ฉันสามารถกำหนดฟังก์ชันการทำงานที่กำหนดเองสำหรับแต่ละไซต์ในขณะที่ยังคงความรู้สึกทั่วไปของความสม่ำเสมอทั่วทั้งเครือข่าย
ในอีกด้านหนึ่งผู้พัฒนาชุดรูปแบบอาจเลือกวิธีการใช้คลาสในการกำหนดชื่อฟังก์ชั่น (ซึ่งไม่ใช่เรื่องไร้สาระหากคุณทำงานในสภาพแวดล้อมที่คุณใช้ชิ้นส่วนของรหัสเดียวกันซ้ำแล้วซ้ำอีก) ในทางกลับกันนักพัฒนาชุดรูปแบบอาจเลือกวิธีการตามระดับชั้นเรียนเพื่อเพิ่มความง่ายในการขยายโดยชุดรูปแบบลูก
อะไรคือข้อดีของการเข้ารหัสธีมเช่นนี้?
หากคุณใช้ไฮบริดในเว็บไซต์ของคุณมีเพียงเล็กน้อยเท่านั้นที่จะได้รับประโยชน์จากการเป็นผู้ใช้ปลายทาง หากคุณกำลังสร้างธีมลูกสำหรับไฮบริดมีข้อดีจากการกำหนดเนมสเปซและการขยาย หากคุณทำงานกับThemeHybridความได้เปรียบจะอยู่ที่การใช้รหัสที่รวดเร็วและมีประสิทธิภาพในโครงการอื่น ๆ ของคุณ (Prototype, Leviathan ฯลฯ )
และถ้าคุณเป็นผู้พัฒนาธีมที่ชอบคุณสมบัติเฉพาะของไฮบริด แต่ไม่ใช่ทั้งธีมข้อดีนั้นอยู่ที่การนำโค้ดมาใช้อย่างรวดเร็วและมีประสิทธิภาพในโครงการที่ไม่ใช่ไฮบริดของคุณ (สมมติว่ามันเป็น GPL)