มาตรฐานการโหลดอัตโนมัติ PSR-4
ทำความเข้าใจว่า PSR-4 จับคู่ส่วนของเนมสเปซกับเส้นทางไดเรกทอรีอย่างไร
มาตรฐานการโหลดอัตโนมัติ PSR-4 เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
การโหลดอัตโนมัติคืออะไร
การโหลดอัตโนมัติหมายถึง PHP จะโหลดไฟล์คลาสโดยอัตโนมัติในครั้งแรกที่คุณใช้คลาสนั้น โดยไม่ต้องใช้ require ด้วยตนเอง
ก่อนมีการโหลดอัตโนมัติ
หากไม่มีการโหลดอัตโนมัติ ทุกไฟล์จะเริ่มต้นด้วยคำสั่ง require_once หลายสิบรายการ ซึ่งเปราะบางและดูแลรักษาได้ยาก
กฎ PSR-4
PSR-4 จะแมปคำนำหน้าเนมสเปซกับไดเรกทอรีฐาน เมื่อกำหนดคำนำหน้า App\ → src/: App\Models\User จะโหลดจาก src/Models/User.php
สูตรการแมป
ตัดคำนำหน้าออก แทนที่แบ็กสแลชที่เหลือด้วยตัวคั่นไดเรกทอรี แล้วเติม .php
App\Services\Payment\Stripe → src/Services/Payment/Stripe.php
ส่วน autoload ใน composer.json
กำหนดการแมปแบบ PSR-4 ใน composer.json หลังจากแก้ไขแล้ว ให้เรียกใช้ composer dump-autoload
// composer.json
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}คำนำหน้าเนมสเปซหลายรายการ
โครงการหนึ่งสามารถมีการแมปแบบ PSR-4 ได้หลายรายการ ซึ่งมีประโยชน์สำหรับแยกเนมสเปซของการทดสอบ
// composer.json
{
"autoload": { "psr-4": { "App\\": "src/" } },
"autoload-dev": { "psr-4": { "Tests\\": "tests/" } }
}ชื่อคลาส = ชื่อไฟล์
ชื่อคลาสต้องตรงกับชื่อไฟล์ทุกตัวอักษร (บน Linux ตัวพิมพ์เล็กใหญ่มีความแตกต่างกัน) class UserService ต้องอยู่ใน UserService.php
หนึ่งคลาสต่อหนึ่งไฟล์
PSR-4 กำหนดให้มีคลาส อินเทอร์เฟซ หรือเทรตเพียงหนึ่งรายการต่อไฟล์ การกำหนดหลายรายการจะทำให้การโหลดอัตโนมัติทำงานผิดพลาด
PSR-4 เทียบกับ PSR-0
PSR-0 (เลิกใช้แล้ว) ใช้ขีดล่างในชื่อคลาสเป็นตัวคั่นไดเรกทอรี ส่วน PSR-4 สะอาดกว่าและเป็นมาตรฐานปัจจุบัน
ตัวโหลดอัตโนมัติที่สร้างขึ้น
หลังจากเรียกใช้ composer dump-autoload แล้ว Composer จะเขียนไฟล์ vendor/autoload.php ให้เรียกใช้ไฟล์นี้เพียงครั้งเดียวที่จุดเริ่มต้นของโปรแกรม
<?php
require __DIR__.'/vendor/autoload.php';
$user = new App\Models\User(); // autoloads automaticallyทางเลือกสำรองด้วยแผนผังคลาส
Composer ยังสร้างแผนผังคลาสสำหรับไฟล์ที่ไม่ทำตาม PSR-4 ด้วย ซึ่งมีประโยชน์กับโค้ดเก่า
โครงสร้างไดเรกทอรีที่ใช้ได้จริง
src/\n Models/User.php → App\Models\User\n Http/Controllers/\n UserController.php → App\Http\Controllers\UserController
ตรวจสอบความเข้าใจอย่างรวดเร็ว
PSR-4 จะค้นหา App\Services\Mailer ที่ใด หากคำนำหน้า App\\ แมปกับ src/
คำถามที่พบบ่อย
บทเรียน “มาตรฐานการโหลดอัตโนมัติ PSR-4” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “มาตรฐานการโหลดอัตโนมัติ PSR-4” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “มาตรฐานการโหลดอัตโนมัติ PSR-4”
ทำความเข้าใจว่า PSR-4 จับคู่ส่วนของเนมสเปซกับเส้นทางไดเรกทอรีอย่างไร คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “มาตรฐานการโหลดอัตโนมัติ PSR-4” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม
ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การประกาศและใช้งานเนมสเปซ
- เนมสเปซซ้อนกันและชื่อแฝง
- มาตรฐานการโหลดอัตโนมัติ PSR-4
- การลงทะเบียนตัวโหลดอัตโนมัติ