Appearance
📂 Laravel Project Structure
เมื่อเปิดโปรเจกต์ Laravel ขึ้นมา จะพบกับไฟล์และโฟลเดอร์มากมาย ไม่ต้องตกใจ! เราจะโฟกัสเฉพาะส่วนที่สำคัญสำหรับการพัฒนา API
🗂️ โฟลเดอร์หลัก (Main Directories)
app/ (Application Core)
หัวใจสำคัญของแอปพลิเคชัน โค้ดส่วนใหญ่ของเราจะอยู่ที่นี่
Models/: เก็บไฟล์ Model ที่ใช้ติดต่อกับ Database (เช่นUser.php,Product.php)Http/Controllers/: เก็บ Controller ที่รับผิดชอบ Logic การทำงาน (เช่นProductController.php)Http/Requests/: (สร้างเพิ่มเองได้) สำหรับทำ Validation ข้อมูลที่ส่งเข้ามา
routes/ (Routing)
กำหนดเส้นทาง (URL) ของแอปพลิเคชัน
api.php: สำคัญที่สุดสำหรับเรา! ใช้กำหนด Route ของ API (เช่น/api/users)web.php: ใช้สำหรับ Web Route ปกติ (ที่ return HTML views)console.php: สำหรับสร้างคำสั่ง Command Line ของตัวเอง
database/ (Database Management)
migrations/: ไฟล์สำหรับสร้างหรือแก้ไขโครงสร้างตาราง (Schema) ใน Databaseseeders/: ไฟล์สำหรับสร้างข้อมูลตัวอย่าง (Dummy Data)
config/ (Configuration)
เก็บไฟล์ตั้งค่าทั้งหมดของระบบ
app.php: ตั้งค่าพื้นฐาน (Timezone, Locale, Encryption Key)database.php: ตั้งค่าการเชื่อมต่อ Databasecors.php: สำคัญ! ตั้งค่า Cross-Origin Resource Sharing เพื่อให้ React เรียก API ได้
public/
จุดเริ่มต้นของ Web Server เข้าถึงได้จากภายนอก
index.php: ไฟล์แรกที่ Server เรียกทำงาน- เก็บไฟล์ Static เช่น รูปภาพ, CSS, JS (ในกรณีทำ Web ปกติ)
.env (Environment Variables)
ไฟล์เก็บค่า configuration ที่เป็นความลับ หรือเปลี่ยนไปตาม Environment (Local, Production)
WARNING
ไฟล์นี้ห้าม commit ขึ้น Git เด็ดขาด! (Git จะเก็บ .env.example แทน)
⚙️ การตั้งค่าที่สำคัญใน .env
เมื่อเริ่มโปรเจกต์ใหม่ ควรตรวจสอบค่าเหล่านี้:
ini
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:... (สร้างอัตโนมัติ)
APP_DEBUG=true
APP_URL=http://localhost
#ตั้งค่า Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_workshop <-- ชื่อฐานข้อมูลของเรา
DB_USERNAME=root <-- Username ของ MySQL
DB_PASSWORD= <-- Password ของ MySQL🧠 Flow การทำงานของไฟล์ต่าง ๆ
เพื่อให้เห็นภาพรวม สมมติว่ามีการเรียก API GET /api/products:
- Request เข้ามาที่
public/index.php - ส่งต่อไปยัง router ใน
routes/api.php - Route เรียกใช้งาน
ProductControllerในapp/Http/Controllers/ - Controller สั่ง
ProductModel ในapp/Models/ให้ดึงข้อมูล - Model คุยกับ Database (ผ่านการตั้งค่าใน
.envและconfig/database.php) - ส่งข้อมูลกลับเป็น JSON