Laravel มีโครงสร้างโฟลเดอร์และไฟล์ที่จัดเรียงเป็นระบบระเบียบ ซึ่งช่วยให้การพัฒนาแอปพลิเคชันสะดวกและเป็นมาตรฐาน ในบทนี้เราจะทำความเข้าใจกับโครงสร้างหลักของไฟล์และโฟลเดอร์ใน Laravel พร้อมทั้งตัวอย่างการใช้งาน
โครงสร้างไฟล์หลักใน Laravel
เมื่อสร้างโปรเจค Laravel คุณจะเห็นโครงสร้างโฟลเดอร์และไฟล์ดังนี้:
myapp/
├── app/
│ ├── Console/
│ ├── Exceptions/
│ ├── Http/
│ ├── Models/
│ ├── Providers/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── artisan
├── composer.json
└── server.php
โฟลเดอร์สำคัญ
- app/ – เป็นที่เก็บโค้ดหลักของแอปพลิเคชัน โดยเฉพาะ MVC (Model-View-Controller)
- Http/ – ที่เก็บคอนโทรลเลอร์และมิดเดิลแวร์
- Models/ – ที่เก็บโมเดลของแอปพลิเคชัน
- Providers/ – ที่เก็บ service provider ต่างๆ เช่น AppServiceProvider, AuthServiceProvider เป็นต้น
- bootstrap/ – ที่เก็บไฟล์
app.php
สำหรับบูทแอปพลิเคชัน Laravel และจัดการการโหลดไฟล์ต่างๆ - config/ – ที่เก็บไฟล์คอนฟิกต่างๆ ของแอป เช่น การตั้งค่า database, mail, cache, session เป็นต้น
- database/ – ที่เก็บการตั้งค่าฐานข้อมูล ไฟล์ migration, factories, และ seeders
- public/ – โฟลเดอร์สำหรับไฟล์ที่สามารถเข้าถึงได้จากภายนอก เช่น
index.php
, CSS, JavaScript, และภาพต่างๆ - resources/ – ที่เก็บไฟล์ view (Blade template), ไฟล์ภาษา, และไฟล์ assets อื่นๆ
- routes/ – ที่เก็บไฟล์การตั้งค่าเส้นทาง เช่น
web.php
,api.php
,console.php
- storage/ – ใช้เก็บไฟล์ที่ต้องการบันทึกชั่วคราว เช่น cache, logs, session, และข้อมูลที่อัปโหลด
- tests/ – ที่เก็บโค้ดสำหรับการทดสอบ Unit Test และ Feature Test
- vendor/ – โฟลเดอร์ของแพ็คเกจที่ Composer ติดตั้ง
การนำไปใช้งาน
โครงสร้างโฟลเดอร์ของ Laravel ช่วยให้นักพัฒนาแยกส่วนของโค้ดได้ง่ายและมีระเบียบ ตัวอย่างเช่น หากต้องการเพิ่มคอนโทรลเลอร์ใหม่ สามารถสร้างไฟล์ใน app/Http/Controllers/
และถ้าต้องการเพิ่ม view สามารถเพิ่มไฟล์ Blade ใน resources/views/
ตัวอย่างการใช้งานโครงสร้างโฟลเดอร์
- การสร้าง Controller
// สร้างไฟล์ ExampleController.php ใน app/Http/Controllers/
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ExampleController extends Controller
{
public function show()
{
return view('example');
}
}
2.การสร้าง View
<!-- สร้างไฟล์ example.blade.php ใน resources/views/ -->
<html>
<body>
<h1>Hello from Example View!</h1>
</body>
</html>
3.การตั้งค่า Route
// เพิ่มในไฟล์ routes/web.php
Route::get('/example', [App\Http\Controllers\ExampleController::class, 'show']);
หลังจากกำหนดเส้นทางและสร้างคอนโทรลเลอร์และวิวเรียบร้อยแล้ว เมื่อไปที่ URL /example
ในเบราว์เซอร์ คุณจะเห็นข้อความจากวิวที่สร้างขึ้น