Skip to content

📂 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) ใน Database
  • seeders/: ไฟล์สำหรับสร้างข้อมูลตัวอย่าง (Dummy Data)

config/ (Configuration)

เก็บไฟล์ตั้งค่าทั้งหมดของระบบ

  • app.php: ตั้งค่าพื้นฐาน (Timezone, Locale, Encryption Key)
  • database.php: ตั้งค่าการเชื่อมต่อ Database
  • cors.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:

  1. Request เข้ามาที่ public/index.php
  2. ส่งต่อไปยัง router ใน routes/api.php
  3. Route เรียกใช้งาน ProductController ใน app/Http/Controllers/
  4. Controller สั่ง Product Model ใน app/Models/ ให้ดึงข้อมูล
  5. Model คุยกับ Database (ผ่านการตั้งค่าใน .env และ config/database.php)
  6. ส่งข้อมูลกลับเป็น JSON