เมื่อใดควรใช้ไฟล์ include (inc) ในการพัฒนาโมดูล


10

ฉันคิดว่าฉันเข้าใจความแตกต่างทางโครงสร้างของไฟล์. inc (เทียบกับ. โมดูล) แต่มีคนอธิบายความแตกต่างในการออกแบบได้ไหม ฉันเห็นโมดูลตัวอย่าง drupal เรียกไฟล์. inc ด้วย hook_menu หรือดูไฟล์ call. inc เพื่อกำหนดฟังก์ชั่น

  • ภายใต้สถานการณ์ที่ไม่ใส่รหัสในไฟล์. inc? มีแนวทางการออกแบบทั่วไปที่บางคนยึดติดอยู่?
  • มีข้อได้เปรียบอื่นใดนอกจากความชัดเจนว่าทำไมจะใช้ไฟล์ (หรือหลายไฟล์). inc ประสิทธิภาพ? เวอร์ชัน?

ขอบคุณ!


1
คุณไม่สามารถรับเป็นคำอธิบายที่ดีกว่าคำตอบที่ได้รับการยอมรับที่จะคำถามนี้ในความคิดของฉัน :)
ไคลฟ์

3
เป็นการส่วนตัวถ้าฉันมี mod ที่รองรับหลาย ๆ url หรืออะไรก็ตามฉันใช้.incper per เพียงองค์กรฉันเดาแทนการทิ้งฟังก์ชั่นแบบสุ่มเป็น.moduleไฟล์ขนาดใหญ่หนึ่งไฟล์ แต่เป็นที่อ้างอิงโพสต์ของ @ Clive มันเป็นเพียงความเห็นส่วนตัวหรือสิ่งที่คุณคุ้นเคย ไม่ถูกหรือผิดที่นี่
au_stan

1
อันที่จริงฉันใช้ modulename.preprocess.inc, modulename.node.inc, modulename.menu.inc ฯลฯ เพื่อแยกโมดูลขนาดใหญ่ออกเป็นส่วนย่อย ๆ ของฟังก์ชั่นที่เกี่ยวข้อง แต่เหตุผลที่แท้จริงเพียงอย่างเดียวจากมุมมองประสิทธิภาพที่ใช้นอกการพัฒนา องค์กรอาจถ้าโมดูลของคุณมีฟังก์ชั่นที่ค่อนข้างใหญ่ซึ่งไม่ค่อยมีใครเรียกว่าคุณไม่ต้องการให้ php เอ็นจิ้นของคุณแยกวิเคราะห์ทุกครั้งที่โหลด จากนั้นคุณสามารถนำสิ่งเหล่านี้เข้ามาเมื่อจำเป็นเช่นเดียวกับสิ่งที่ทำกับการโทรกลับเมนูรวมถึง
Jimajamma

สำหรับสิ่งที่คุ้มค่าฉันจัดกลุ่มการใช้งาน hook และฟังก์ชั่นผู้ช่วยและจัดหมวดหมู่ doc doc ของพวกเขาโดยใช้หลักการตั้งชื่อที่เหมาะสม (ในเมืองหลวง) ดังนั้นเมื่อฉันเลื่อนดูรหัสของโมดูลฉันสามารถเห็นการแยกระหว่างกลุ่มการทำงานที่แตกต่างกัน ฉันดูในมาตรฐานการแสดงความคิดเห็นเพื่อดูว่ามีระบบอยู่แล้ว แต่ฉันสามารถเห็นได้
dbj44

คำตอบ:


12

ตามกฎทั่วไปฉันจะใส่โค้ดโมดูลในไฟล์ที่จำเป็นต้องใช้บ่อยกว่า (เช่นฟังก์ชันตัวช่วยที่ใช้จากฟังก์ชันมากกว่าหนึ่งฟังก์ชัน) และในไฟล์. inc รหัสที่ไม่ได้ใช้บ่อยหรือเป็นเฉพาะ หน้า

ตั้งแต่ Drupal 6 รหัสจะโหลดไฟล์ที่มีการเรียกกลับหน้าเว็บโดยอัตโนมัติหรือผู้สร้างฟอร์มที่ใช้สำหรับรายการเมนู ด้วยเหตุผลดังกล่าวการเรียกกลับหน้าเพจสำหรับหน้าการดูแลระบบจะถูกวางในไฟล์. admmin.inc ในขณะที่การเรียกกลับหน้าเพจสำหรับหน้าปกติจะอยู่ในไฟล์. pages.inc

ตั้งแต่ Drupal 7 ไฟล์ที่มีคลาสจะถูกโหลดโดยอัตโนมัติเมื่อคลาสนั้นถูกสร้างขึ้น Drupal 7 อนุญาตให้โมดูลสามารถกำหนดว่าไฟล์ใดบ้างที่ hooks ถูกกำหนด (ผ่านhook_hook_info () ) ยกตัวอย่างเช่นsystem_hook_info ()กำหนดไฟล์ .tokens.inc เป็นไฟล์ที่hook_token_info(), hook_token_info_alter(), hook_tokens()และhook_tokens_alter()สามารถพบการใช้งาน; ด้วยวิธีนี้ไฟล์เหล่านั้นจะถูกโหลดโดยอัตโนมัติเมื่อต้องการหนึ่งในตะขอเหล่านั้น
วิธีนี้ช่วยให้สามารถแยกรหัสในไฟล์ที่โหลดได้เมื่อจำเป็นและรหัสที่โหลดจาก Drupal เสมอ

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