ตัวอย่างการรวมโปรเจ็ค eBorrow และ Inventory เข้าด้วยกัน
ในตัวอย่างนี้เป็นตัวอย่างการรวมโปรเจ็คยอดนิยมสองโปรเจ็คเข้าด้วยกัน ซึ่งก็คือโปรแกรม ยืม-คืน (eBorrow) เข้ากับโปรแกรม Inventory ซึ่งทั้งสองโปรแกรมมีการใช้งานโมดูลร่วมกันคือ Inventory (คลังสินค้า) ซึ่งเป็นการรวมโปรแกรมที่สร้างจาก Web Framework อีกทีซึ่งการรวมจะง่ายขึ้นอีก
หลักในการรวมโปรแกรม คือเราจะย้ายโค้ดทั้งหมดจากโปรแกรมหนึ่งไปใส่อีกโปรแกรม จุดยุ่งยากจริงๆ ก็จะเป็นโค้ดตรงส่วนที่มีการใช้งานเหมือนๆกัน ซึ่งอาจจะต้องตัดสินใจเก็บโค้ดของโปรแกรมหนึ่งโปรแกรมใดไว้โดยต้องดูจากการทำงานของโค้ดในส่วนนั้นและการทำงานของโปรแกรม เพื่อไม่ให้เกิดปัญหาขัดแย้งกัน ส่วนกรณีของโค้ดที่ไม่ขัดแย้งกันก็สามารถรวมกันตรงๆได้เลย
สำหรับขั้นตอนการรวมดูได้จากคลิปเลยครับ (ผมไม่ค่อยถนัดทำคลิปเท่าไรอย่าถือสาล่ะ คลิปแค่นี้ผมก็ใช้เวลาทำตั้งสองวัน)
คำแนะนำเพิ่มเติม
จุดที่มีโอกาสผิดพลาดได้ง่ายจะมีอยู่ 2 จุดหลักๆ คือโค้ดในส่วนของฐานข้อมูล และ ภาษา ซึ่งจริงๆ อาจเลือกใช้วิธีติดตั้งโปรเจ็คทั้งสองแยกกันไปก่อน จากนั้นค่อยแก้ไขฐานข้อมูลให้ตรงกัน แล้วจากนั้นค่อยย้ายไฟล์ภาษาไป Import ยังโปรแกรมตัวที่จะเก็บไว้ก็ได้ ซึ่งถ้าทั้งฐานข้อมูลและไฟล์ภาษาของทั้งสองโปรเจ็คถูกต้องแล้ว ฐานข้อมูลจะต้องสามารถใช้งานร่วมกันได้ทั้ง 2 โปรเจ็คโดยที่ยังไม่ต้องรวมไฟล์ (สามารถตั้งค่าฐานข้อมูลไปใช้อันเดียวกันได้เลย โดยจะต้องแก้ไขไฟล์ config.php และ database.php ให้รายละเอียดของไฟล์ชี้ไปที่เดียวกันด้วย โดยยึดเอาไฟล์ config ของโปรแกรมที่จะเก็บฐานข้อมูลไว้เป็นหลัก) หากเรียบร้อยดี สามารถข้ามกระบวนการรวมไฟล์ในส่วนของโฟลเดอร์ install/ และ language/ ได้ ซึ่งวิธีนี้จะทำให้การทดสอบเพื่อแก้ไขข้อขัดแย้งกันง่ายขึ้น
หมายเหตุ ไฟล์ config ของโปรแกรมจะสัมพันธ์กับฐานข้อมูลสมาชิกที่ใช้งานอยู่ จะต้องใช้ไฟล์และฐานข้อมูลจากโปรแกรมเดียวกันเท่านั้น
หัวข้อพิเศษ การรวมโปรแกรม Booking กับ Car Reservation เข้าด้วยกัน
โดยหลักกการแล้วการรวมโปรเจ็คทุกๆโปรเจ็คจะมีวิธีการที่ไม่แตกต่างกัน แต่เนื่องจากโปรแกรม Booking และ Car Reservation มีจุดแตกต่างที่สำคัญอยู่จุดหนึ่งคือ โปรแกรม Booking จะมีส่วนของหน้าเว็บที่ไม่ต้อง Login ในขณะที่ Car Reservation จะต้องเข้าระบบก่อนใช้งานเสมอ ทำให้โมดูล index ของทั้งสองโปรแกรมจะแตกต่างกันเล็กน้อยจุดที่แตกต่างกันคือ Controller ของหน้า Home ของ Booking ไม่มีการตรวจสอบการ Login ในขณะที่ของ Car Reservation มีการตรวจสอบในส่วนนี้
ก่อนอื่นผมขออธิบายหน้าที่ของ Controller ของ Web Framework ก่อน
Controller จะเป็นด่านแรกเมื่อมีการเรียกหน้าเว็บใดๆเข้ามา (Controller ที่จะถูกเรียกใช้ สัมพันธ์กับ URL ที่เรียกมาที่ module) Controller จะมีหน้าที่หลักในการตรวจสอบสิทธิ์ในการเข้าถึงหน้าเว็บนั้นๆ ตลอดจนตรวจสอบความถูกต้องของข้อมูลที่ส่งมา (เช่น ID ที่ต้องการ) รวมถึงการจัดเตรียมการแสดงผล title breadcrumbs ต่างๆที่จะแสดงทางหน้าเว็บ ก่อนที่จะไปเรียก View ที่สัมพันธ์กันเพื่อแสดงผลเนื้อหาของหน้า (เช่น ตาราง หรือ ฟอร์ม)
แน่นอนครับ ว่าถ้าเรามีการกำหนดให้มีการตรวจสอบสิทธ์ในหน้านี้ การเรียกหน้าเว็บนั้นๆก็ต้องผ่านการ Login มาก่อนแล้ว
// สมาชิก
$login = Login::isMember();
// สำหรับตรวจสอบว่าเว็บไซต์ต้องเข้าระบบก่อนเสมอ (dashboard)
if ($login) {
// การทำงานของ Controller ที่นี่ หาก Login แล้ว
...............
...............
}
// 404 ยังไม่ได้เข้าระบบ (หรือไม่มีสิทธิ์ดูหน้านี้)
\Index\Error\Controller::execute($this, $request->getUri());
โค้ดด้านบนจะเป็นส่วนในการตรวจสอบการเข้าระบบของโปรแกรม Car Reservation ซึ่งโปรแกรม Booking จะไม่มีโค้ดในส่วนนี้ ดังนั้นถ้าต้องการเลือกแบบใดให้เก็บโค้ดของหน้าเว็บนั้นๆไว้