การโหลดอัตโนมัติ

การโหลดไฟล์ตามมาตรฐาน PSR-0 ด้วย composer

Webman ปฏิบัติตามมาตรฐานการโหลดอัตโนมัติ PSR-4 หากธุรกิจของคุณต้องการโหลดโค้ดที่เป็นไปตามมาตรฐาน PSR-0 โปรดทำตามขั้นตอนด้านล่างนี้

  • สร้างไดเรกทอรี extend เพื่อเก็บโค้ดที่เป็นไปตามมาตรฐาน PSR-0
  • แก้ไข composer.json เพื่อเพิ่มเนื้อหาดังต่อไปนี้ใน autoload
"psr-0" : {
    "": "extend/"
}

ผลลัพธ์สุดท้ายจะมีลักษณะคล้ายกับ

  • รัน composer dumpautoload
  • รัน php start.php restart เพื่อรีสตาร์ท webman (โปรดทราบว่าต้องรีสตาร์ทเพื่อให้มีผล)

การโหลดไฟล์บางไฟล์ด้วย composer

  • แก้ไข composer.json เพื่อเพิ่มไฟล์ที่ต้องการโหลดใน autoload.files

    "files": [
    "./support/helpers.php",
    "./app/helpers.php"
    ]
  • รัน composer dumpautoload

  • รัน php start.php restart เพื่อรีสตาร์ท webman (โปรดทราบว่าต้องรีสตาร์ทเพื่อให้มีผล)

คำแนะนำ
ไฟล์ที่กำหนดใน autoload.files ใน composer.json จะถูกโหลดก่อนที่ webman จะเริ่มทำงาน ในขณะที่ไฟล์ที่โหลดด้วย config/autoload.php ของเฟรมเวิร์กจะถูกโหลดหลังจากที่ webman เริ่มทำงานแล้ว
หากมีการเปลี่ยนแปลงไฟล์ที่โหลดใน autoload.files ใน composer.json จะต้องทำการ restart เพื่อให้มีผล การ reload จะไม่มีผล ในขณะที่ไฟล์ที่โหลดด้วย config/autoload.php ของเฟรมเวิร์กรองรับการโหลดแบบร้อน เมื่อมีการเปลี่ยนแปลงแล้วสามารถทำการ reload เพื่อให้มีผลได้

การโหลดไฟล์บางไฟล์ด้วยเฟรมเวิร์ก

ไฟล์บางไฟ้อาจไม่เป็นไปตามมาตรฐาน SPR และไม่สามารถโหลดอัตโนมัติได้ เราสามารถตั้งค่าโหลดไฟล์เหล่านี้ได้ผ่าน config/autoload.php เช่น:

return [
    'files' => [
        base_path() . '/app/functions.php',
        base_path() . '/support/Request.php', 
        base_path() . '/support/Response.php',
    ]
];

คำแนะนำ
เราจะเห็นว่าใน autoload.php ได้ตั้งค่าโหลดไฟล์ support/Request.php และ support/Response.php สองไฟล์นี้ เนื่องจากใน vendor/workerman/webman-framework/src/support/ ก็มีไฟล์ที่เหมือนกันสองไฟล์นี้อยู่ เราจึงใช้ autoload.php โหลดไฟล์ support/Request.php และ support/Response.php ที่อยู่ในไดเรกทอรีรากของโปรเจกต์ก่อน ซึ่งอนุญาตให้เราปรับแต่งเนื้อหาของไฟล์ทั้งสองนี้โดยไม่ต้องแก้ไขไฟล์ใน vendor หากคุณไม่ต้องการปรับแต่งพวกมัน สามารถละเว้นการตั้งค่าสองรายการนี้ได้