ถึงคิวที่เราจะต้องมาไล่ดูโฟลเดอร์แต่ละโฟลเดอร์ของ Laravel ว่ามันใช้ทำงานอะไรบ้าง แต่เดี๋ยวก่อน ผมขอพูดย้ำคำว่า Framework อีกที
จำไว้นะครับว่าเรายังเขียนโค้ดด้วยภาษา PHP เหมือนเดิมไม่มีอะไรแตกต่าง Framework มันเพียงแค่เพิ่มกฎให้เราปฎิบัติตามไม่มาก เช่นกำหนดโฟลเดอร์มาแล้วว่าจะต้องเก็บส่วนการติดต่อกับฐานข้อมูลที่ database หรือ โค้ดส่วนการประมวลผลต้องเขียนเก็บไว้ที่โฟลเดอร์ controllser นู่นนี่นั่น เอาเป็นว่า Framework มันคือกรอบ นั่นเอง
ไหนๆก็ไหนๆ ผมพูดถึง MVC ซะด้วยเลยในบทความนี้
ในโลกก่อนหน้าที่จะมี MVC เราเขียนโค้ดทั้งหมดปนๆลงไปในไฟล์เดียวกัน ติดต่อฐานข้อมูล คิวรี่ข้อมูล ตรวจสอบความถูกต้องของข้อมูล บันทึกข้อมูลลงฐานข้อมูล แสดงผล และแล้วคุณระเบียบคนหนึ่ง แกก็บอกว่า เห้ย… การที่คุณมึงเขียนปนเปกันลงไปในไฟล์เดียวนั้น มันทำให้ไล่โค้ดได้ยากชิบหาย (อันนี้บางคนที่คุ้นเคยจะแย้ง ซึ่งแรกๆผมก็แย้ง มึงดูไงยากวะ) เขียนง่ายแต่ maintenance cost มันสูง แล้วอีกอย่างฝ่ายดีไซด์มันต้องมาเห็นโค้ด PHP ของคุณด้วยใช่มั้ย ซึ่งเขาคงงง เอางี้ดีกว่า
แยกโค้ดแม่งเลย แล้วเดี๋ยวค่อย include เข้ามาใช้ ส่วนของการจัดการฐานข้อมูลให้แยกไปไฟล์หนึ่ง ให้เรียกชื่อมันว่า Model ละกัน การบันทึก การลบ การแก้ไข ให้เขียนโค้ดใน Model ทางข้างนอกแค่ส่งข้อมูลเข้าไปให้ หรือส่งคำสั่งไปบอกว่าอยากให้ทำอะไร แล้ว Model ก็ทำให้เสร็จ หรืออยากได้ข้อมูลก็ส่งคำสั่งเข้าไปขอออกมา คำสั่งขอแบบสั้นๆนะ ไม่ใช่คิวรี่ เช่นบอกว่า ขอข้อมูลที่มีคนดูเยอะที่สุด 10 อันดับ
ส่วนโค้ดที่มันต้องแสดงผลออกไปทางหน้าจอ เราก็แยกไฟล์มันออกไป ให้เรียกชื่อมันว่า View ตรงตัวไป ในวิวก็ให้มีแต่การแสดงผลเท่านั้น อาจจะหยวนๆเรื่อง loop เรื่อง if บ้างเพราะบางทีการแสดงผลมันก็ไม่เหมือนกันในบุคลธรรมและคนที่ล้อกอิน
พอแยกไปแล้วมันก็จะยังเหลือโค้ดอีกส่วนหนึ่ง ก็ไอ้โค้ดที่จะไปขอข้อมูลจาก Model บ้างล่ะ โค้ดคำนวนนู่นนี่นั่นบ้างล่ะ โค้ดตรวจสอบข้อมูลบ้างล่ะ ให้มันเป็นตัวประสานงานและให้เรียกมันว่า Controller
จบ
สรุปเราจึงได้ MVC มาใช้งาน
ยังๆ ยังไม่จบ ที่ได้มานั่น มันยังอยู่ในรูปของแนวความคิด
หลังจากนั้นจึงมีคนหยิบแนวความคิดนี้มาเพิ่มกฎนู่นนี่นั่นเพิ่มเติมเข้าไป แล้วเขียนโค้ดการควบคุมกลางเข้าไปให้ ประมาณว่ามันจะคอยประกอบไฟล์ต่างๆให้ เพียงแค่จะต้องเอาส่วนประกอบใส่ไว้ให้ถูกโฟลเดอร์ นี่แหละที่มาของ Framework
มาดูโครงสร้างโฟลเดอร์ของ Laravel ซะที
app – โฟลเดอร์นี้ใช้เก็บไฟล์ที่เป็นคอร์หลักของโปรเจ็กเรา Model กับ Controller เราจะเขียนกันในนี้
bootstrap – เห็นว่า Laravel มันไว้ใช้เก็บโค้ดส่วนของการ boot ระบบ ผมอ่านๆแล้วก็งงๆ (เราไม่เข้ามายุ่งกับโฟลเดอร์นี้เท่าไร)
config – โฟลเดอร์นี้ใช้เก็บค่าคอนฟิกทั้งหมดในโปรเจ็ก คิดถึงคอนฟิก คิดถึงโฟลเดอร์นี้
database – โฟลเดอร์นี้ใช้เก็บไฟล์ migration, seed, factory (ไม่เก็บ Model ไว้ในนี้)
public – เป็นโฟลเดอร์ที่เข้าถึงได้ผ่าน www
resources – โฟลเดอร์นี้ใช้เก็บไฟล์ View และไฟล์สำหรับทำเว็บแบบหลายภาษา
storage – โฟลเดอร์นี้ใช้เก็บไฟล์ที่ถูก Laravel คอมไพล์ (ต้องถูกเซ็ตเป็น 777)
vendor – โฟลเดอร์นี้ใช้เก็บไฟล์คลาสจากภายนอกที่เราจะเอามาใช้ในโปรเจ็ก คลาสจากภายนอกส่วนใหญ่เราไม่ได้ดาวน์โหลดมาติดตั้งเอง แต่ติดตั้งผ่าน composer และ composer เมื่อมันดาวน์โหลดคลาสมา มันก็จะเอามาเก็บไว้ที่นี่
ส่วนไฟล์อื่นๆที่เราเห็น
เดี๋ยวก็ได้ใช้และรู้เรื่องมันเอง ตอนนี้ใจเซ่าๆไว้ก่อน
Leave a Reply