Kotchasan PHP Framework

คู่มือการใช้งาน Admin Framework by Kotchasan ตอนที่ 1

Admin Framework ถูกออกแบบมาเพื่อลดความยุ่งยากในการทำความเข้าใจกับระบบ ดังนั้นผมจะอธิบายส่วนพื้นฐานของระบบแค่เพียงคร่าวๆนะครับ ใครที่สนใจลึกๆผมแนะนำให้ศึกษาจากโค้ดโดยตรง

กลไกการเรียกหน้าเว็บของระบบก็จะเป็นไปตามกฎปกติของคชสาร คือเรียกไปยัง defaultController หรือคือ \Index\Index\Controller (ไฟล์ modules/index/controllers/index.php ซึ่งต่อไปผมจะอ้างถึงคลาสเพียงอย่างเดียว ไม่อธิบายพาธของไฟล์อีกนะครับ) เริ่มต้นเมื่อมีการเรียกหน้าเว็บ ก็จะถูกเรียกไปยัง index.php ซึ่งที่ไฟล์นี้จะทำการโหลดคชสาร และส่งต่อให้กับ defaultController ซึ่งภายใน defaultController จะทำหน้าที่ตั้งแต่การเตรียมระบบ โหลดโมดูล จนกระทั่งเตรียมการแสดงผล แล้วส่งกลับมาแสดงผลยังบราวเซอร์ ซึ่งขั้นตอนทั้งหมดจะเป็นไปตามไดอะแกรมด้านล่าง
จาก defaultController ขั้นตอนแรกจะถูกตรวจสอบการ Login ก่อน เนื่องจากเป็นระบบ Backend ที่ผู้ใช้ต้องเข้าระบบก่อนเสมอ จริงๆแล้วคำสั่งถัดมา (ถ้าดูในโค้ด) จะเป็นการเลือก Template ก่อน แต่ผมไม่ได้อธิบายไว้ในไดอะแกรม ในกรณีที่ยังไม่ได้ Login ก็จะส่งต่อไปจัดการโดย Index\Welcome\Controller เพื่อโหลดหน้า Login, Register หรือ Forgot มาแสดง โดยจะมีการแสดงผลผ่าน Gcms\View

ในกรณีที่มีการเข้าระบบแล้ว ก็จะไปจัดการเตรียมเมนูและโหลดเมนูที่ Index\Menu\Controller โดยที่รายการเมนูหลักทั้งหมดจะอยู่ที่ Index\Menu\Model การเพิ่มลดและแก้ไขเมนูหลักสามารถทำได้ที่นี่เลย (รวมถึงการซ่อน-แสดงเมนูตามสิทธิ์ก็สามารถทำได้ที่นี่เช่นกัน) ในกรณีที่มีการติดตั้งโมดูลอื่นๆร่วมด้วย เมนูของโมดูลต่างๆ จะถูกแยกไปจัดการที่โมดูลแต่ละตัว ยกตัวอย่างเช่นโมดูล Demo เมนูของโมดูลนี้จะอยู่ที่ Demo\Init\Controller::execute() ซึ่งจริงๆแล้ว method นี้จะถูกเรียกเพื่อเตรียมการโหลดโมดูล ซึ่งสามารถเขียนคำสั่งอื่นๆที่ต้องการเพิ่มเติมได้ (ข้อควรระวัง ลำดับการโหลดโมดูลจะไม่สามารถกำหนดได้ ไม่ควรเขียนคำสั่งที่จำเป็นต้องโหลดโมดูลตามลำดับ)

หลังจากเตรียมเมนูเรียบร้อยแล้ว ก็จะถูกส่งไปคัดแยกหน้าหรือโมดูลที่ต้องการที่ Index\Main\Controller ซึ่งเงื่อนไขการคัดแยกหลักจะอยู่ที่ module=xxx ใน URL 
        
  1. module=page ถ้า URL มีลักษณะแบบนี้ จะเป็นไปได้ 2 ทาง คือถ้า page เป็นชื่อโมดูลจะไปเรียก Page\Index\Controller (Page คือโมดูล page) ในกรณีที่ตรวจไม่พบชื่อโมดูลจะถูกส่งไปที่ Index\Page\Controller แทน โดยที่ Page ในกรณีนีจะเป็น Controller ตัวหนึ่งของโมดูล Index นั่นเอง และสุดท้าย ในกรณีที่ไม่พบหน้าที่เกี่ยวข้องเลยก็จะไปเรียกหน้า Home มาแสดงแทน (Index\Home\Controller)
  2.     
  3. module=module-page module ตัวที่สองคือชื่อโมดูลที่ต้องการตามกฏข้อแรก ส่วน page ก็คือ Controller ที่ต้องการของ module ที่เรียกมา เช่น module=demo-table ก็จะถูกเรียกไปยัง Demo\Table\Controller เป็นต้น

ยังมีหน้าเว็บอีกประเภท คือหน้าเว็บที่ถูกโหลดโดย GLoader ซึ่งก็คือหน้าเว็บที่ถูกเรียกโดย URL #module=module-page (ง่ายๆเลยคือ URL ที่อยู่หลังเครื่องหมาย # ทั้งหมด) ซึ่ง URL ลักษณะนี้จะถูกโหลดโดย GLoader ด้วย Ajax โดยในการโหลดหน้าแต่ละครั้งจะถูกส่งไปโหลดหน้าที่ loader.php แทน ซึ่งในหน้านี้การโหลดหน้าเว็บจะถูกเปลี่ยน defaultController เป็น Index\Loader\Controller แทน ซึ่งที่ Controller นี้จะมีการทำงานที่คล้ายคลึงกับไดอะแกรมด้านบน ยกเว้นแค่ไม่มีส่วนของการโหลดเมนูเท่านั้น ส่วนการเรียกไปยังโมดูลที่ต้องการ ยังคงเรียกไปยังโมดูลเดิมที่เรียกโดย index.php

จากที่กล่าวมาทั้งหมดจะเห็นว่า Admin Framework ได้จัดเตรียมขั้นตอนพื้นฐานต่างๆทั้งหมดไว้ให้แล้ว ทำให้ในการออกแบบ เราไม่จำเป็นต้องไปสนใจขั้นตอนเหล่านี้ และไปทำเพียงขั้นตอนต่างๆในส่วนของโมดูลเท่านั้น ซึ่งก็จะทำให้การออกแบบง่ายขึ้น