0Pricing
PHP Academy · บทเรียน

มาตรฐานการโหลดอัตโนมัติ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การประกาศและใช้งานเนมสเปซ
  2. เนมสเปซซ้อนกันและชื่อแฝง
  3. มาตรฐานการโหลดอัตโนมัติ PSR-4
  4. การลงทะเบียนตัวโหลดอัตโนมัติ
← กลับไปที่ PHP Academy