Dev to webs {Coding…}

เรียนรู้การพัฒนาซอฟเวอร์ เพื่อความรู้ที่ยั่งยืน

บทที่ 4: โครงสร้างไฟล์ใน Laravel

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

โฟลเดอร์สำคัญ

  1. app/ – เป็นที่เก็บโค้ดหลักของแอปพลิเคชัน โดยเฉพาะ MVC (Model-View-Controller)
    • Http/ – ที่เก็บคอนโทรลเลอร์และมิดเดิลแวร์
    • Models/ – ที่เก็บโมเดลของแอปพลิเคชัน
    • Providers/ – ที่เก็บ service provider ต่างๆ เช่น AppServiceProvider, AuthServiceProvider เป็นต้น
  2. bootstrap/ – ที่เก็บไฟล์ app.php สำหรับบูทแอปพลิเคชัน Laravel และจัดการการโหลดไฟล์ต่างๆ
  3. config/ – ที่เก็บไฟล์คอนฟิกต่างๆ ของแอป เช่น การตั้งค่า database, mail, cache, session เป็นต้น
  4. database/ – ที่เก็บการตั้งค่าฐานข้อมูล ไฟล์ migration, factories, และ seeders
  5. public/ – โฟลเดอร์สำหรับไฟล์ที่สามารถเข้าถึงได้จากภายนอก เช่น index.php, CSS, JavaScript, และภาพต่างๆ
  6. resources/ – ที่เก็บไฟล์ view (Blade template), ไฟล์ภาษา, และไฟล์ assets อื่นๆ
  7. routes/ – ที่เก็บไฟล์การตั้งค่าเส้นทาง เช่น web.php, api.php, console.php
  8. storage/ – ใช้เก็บไฟล์ที่ต้องการบันทึกชั่วคราว เช่น cache, logs, session, และข้อมูลที่อัปโหลด
  9. tests/ – ที่เก็บโค้ดสำหรับการทดสอบ Unit Test และ Feature Test
  10. vendor/ – โฟลเดอร์ของแพ็คเกจที่ Composer ติดตั้ง

การนำไปใช้งาน

โครงสร้างโฟลเดอร์ของ Laravel ช่วยให้นักพัฒนาแยกส่วนของโค้ดได้ง่ายและมีระเบียบ ตัวอย่างเช่น หากต้องการเพิ่มคอนโทรลเลอร์ใหม่ สามารถสร้างไฟล์ใน app/Http/Controllers/ และถ้าต้องการเพิ่ม view สามารถเพิ่มไฟล์ Blade ใน resources/views/

ตัวอย่างการใช้งานโครงสร้างโฟลเดอร์

  1. การสร้าง 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 ในเบราว์เซอร์ คุณจะเห็นข้อความจากวิวที่สร้างขึ้น