ทำความเข้าใจ Structure โครงสร้าง Folder ของ Laravel

ทำความเข้าใจ Structure โครงสร้าง Folder ของ Laravel

ทำความเข้าใจ กับเรื่องของ โครงสร้างใน Project ที่ Laravel สร้างขึ้นมา เพื่อให้เรารู้ ทุกพื้นฐานในการทำงาน ว่าแต่ละระบบที่สรา้งขึ้น มีการออกแบบมาอย่างไร folder แต่ละกล่อง มีการเก็บข้อมูลแบบไหน ข้อมูลแบบไหน ควรเก็บเอาไว้ที่ใด

ทำความเข้าใจ Structure Laravel

หลังจากที่เรา ทำการติดตั้ง App ของ Laravel เข้ามาในเครื่องแล้ว ตาม Post เรื่อง เริ่มต้นใช้งาน LARAVEL กับการติดตั้งแบบผู้เริ่มต้น ตอนนี้เรา ก็พร้อมที่จะเริ่มต้น พัฒนาระบบกันแล้ว แต่ก่อนที่จะเข้าไปเริ่ม Coding กัน ผมอยากแนะนำให้รู้จักกับ folder ต่างๆ ที่เป็นโครงสร้างของระบบ ใน framework ของ laravel เสียก่อน

ตัว Laravel ออกแบบมาในรูปแบบของ Model View Controller หรือ MVC ดังนั้น การทำงานยังคงยดหลัก แยก folder หรือ Directory กันชัดเจน แต่มีความแตกต่างออกไปเล็กน้อย ในส่วนของ Model ซึ่ง Laravel จะไม่ได้แยกออกมา แต่จะวางรวมเอาไว้ใน folder app เลย มาดูกันเลย

ทำความเข้าใจ folder

folder

File ที่อยู่ด้านนอกทั้งหมด จะเป็นไฟล์สำหรับ config ค่าหลักๆของระบบ เช่น

  • composer.js สำหรับเรียก package ต่างๆจาก composer
  • artisan ที่เอาไว้สำหรับ ทำงานบน artisan ของ laravel
  • .env ที่เอาไว้บอก environment หลักของระบบ
  • .gitignore เพื่อบอกว่าไฟล์ไหนไม่เก็บลง git ก็อยู่ตรงนี้ด้วย

แล้ว folder ด้านใน ประกอบไปด้วยหลักๆคือ folder app สำหรับเก็บ code ทั้งหมดของระบบเรา จะมีทั้ง frontend อย่าง view ด้วยแล้วก็ backend ทั้งหมดก็อยู่ตรงนี้

bootstrap folder เป็นที่สำหรับจัดเก็บ ไฟล์ที่ใช้ในการทำ auto loading ต่างๆ คือทันทีที่เรียกใช้ระบบ ให้ไฟล์พวกนี้ถูกทำงานขึ้นมาทันที

config folder อันนี้เป็น configuration file ต่างๆทั้ง auth, cache, compile, database,session อะไรทั้งหลาย ขึ้นอยู่กับระบบว่าจำเป็นต้องปรับอะไรไหม ส่วนใหญ่ก็ไม่ค่อยได้ไปยุ่งมากนัก

database folder อันนี้เป็น folder สำคัญของ laravel เลยทีเดียว เพราะว่าตัว laravel จะมีความสามารถ ในการจัดการกับฐานข้อมูลในรูปแบบ migration ได้ หรือการสั่งงานผ่านทาง command นั้นอ่ะครับ เอาไว้จะมาเล่าต่อตอนต่อๆไป

public เป็น folder ที่เอาไว้สำหรับ จัดเก็บไฟล์ แบบสาธารณะ ที่ให้ทุกคนสามารถ เข้าถึงได้ เช่นไฟล์พวก css, javascript, images หรือไฟล์ในตระกลู front controller ทั้งหลาย อยู่นี่หมด

resources เป็นพื้นที่สำหรับจัดเก็บพวกไฟล์ raw หรือไฟล์แบบที่ ยังไม่ได้ compiled นั้นแหละ ตระกูล LESS, SASS หรือจะเป็นของฝั่ง Javascript ก็อยู่ตรงนี้ และเป็นที่อยู่ของไฟล์ view ด้วย แล้วก็ยังเป็นพื้นที่ ในการจัดเก็บไฟล์ภาษา สำหรับทำระบบ Multiple language อีกด้วย

storage เป็นส่วนของ พื้นที่คลังจัดเก็บ ข้อมูลตระกูล Session, caches ทั้งหลาย ถูกยัดมาลงไว้ที่นี่ หรือจะเป็นไฟล์ ที่ถูกทาง blade engine เค้าทำการ compiled มาแล้วก็ ถูกวางเอาไว้ตรงนี้เหมือนกัน

tests อันนี้มีหน้าที่สำหรับ จัดเก็บไฟล์ automated tests ทั้งหลายเช่น unit test อะไรแบบนั้น

vendor อันนี้เวลาที่เราให้ composer ไปโหลดอะไรลงมา ที่เค้าเรียกกันว่า dependencies หรือตัว code ที่เป็น tool เสริมของเรา ระบบจะเอามาวางไว้ที่นี่ทั้งหมด

Directory ยอดนิยม

ทีนี้ มาดูกันหน่อยครับว่า Folder หรือ Directory ที่เราจำเป็นจะต้องเกี่ยวข้อง หรือใช้งานเป็นประจำ บ่อยๆ ตามหลักการพัฒนาแบบ MVC เลย มีอะไรกันบ้าง

Controllers folder นี้จะอยู่ภายใต้ folder app และเข้าไปใน folder Httpd อีกที

View folder อันนี้จะอยู่ใน resources ซึ่งเราใช้งาน blade template engine จึงทำให้ไฟล์ที่ใช้จะเป็น index.blade.php

Model folder อันนี้ จะไม่มี folder เป็นของตัวเองเหมือนค่ายอื่นๆ แต่ให้วางไว้ใน folder app ได้เลย

Migration folder อันนี้เป็นตัวจัดการ ฐานข้อมูลเหมือนกัน แต่เราสามารถสร้างผ่าน command line ได้ เราเลยอาจจะไม่ค่อยได้เห็นเท่าไหร่ แต่ระบบจะสร้างแล้วเอามาวางไว้ตรงนี้นี่แหละ

Directory ของทาง Laravel จะมีความแตกต่างจาก ค่ายอื่นๆที่เป็น framework ที่ไม่ได้ใช้งาน composer แต่ถ้าเป็น framework ในกลุ่มที่ใช้งาน composer มักจะมาในแนวๆนี้ ซึ่งถ้าเรามีความเข้าใจ เกี่ยวกับการจัดเก็บไฟล์ทั้งหมด เราจะสามารถ พัฒนางานได้ อย่างมีความเข้าใจ มากขึ้น

ฝากติดตาม ในตอนต่อไปของ series laravel ด้วยนะครับ

อ้างอิง Laravel Directory Structure