ผ่าพิสุจน์ GCMS4 ตอน 2 ไฟล์ Load

ต้องขออภัยที่หายไปนานมากๆ ตาลอยมาเป็นเดือนๆ แล้ว งานรัดตัวซะแทบไม่มีเวลานอนเลย
จากบทความแรกที่ผ่านมาได้ทิ้งท้ายไว้ว่าในบทต่อไป(บทนี้เป็นต้นไป)จะขออธิบายโค้ดในรูปแบบของการสรุป
เนื่องจากความยาวของโค้ดในแต่ละไฟล์นั้นค่อนข้างที่จะยาวหลายบรรทัดมากๆ ยากที่จะอธิบายจบ
ในบทความเดียวแล้วเข้าใจแจ่มแจ้ง อีกอย่างหากเขียนมากเกินไปจะทำให้ผู้อ่านเกินความสับสนเอาเปล่าๆ
 
สรุปการทำงานอธิบายตามบรรทัด
ไฟล์นี้จะถูกเรียกใช้ในบรรทัดที่ 10 ของไฟล์ index.php
โค้ดในไฟล์นี้จะถูกตีกรอบไว้เป็นบันได 3 ขั้นตามรูปแบบของระบบเทมเพลท 
 
- กระบวนการเตรียมข้อมูล (ตรงนี้และที่ไล่กันยาวที่สุดหาที่มาที่ไปกันวุ่นวายที่สุด)
- กระบวนการเลือกใช้เทมเพลทที่กำหนดโดยแทนที่ข้อมูลต่างๆ ลงไปในจุดที่กำหนด (ยังคงยุ่งยากซับซ่อนอยู่แต่
  ก็ความซับซ้อนก็แคบลงมากหากข้อมูลพร้อม)
- แสดงผล (คำสั่งเดียวจบ)
 
1 เริ่มต้น PHP  
2 ถ้ามีการประกาศตัวแปรคงที่ ที่ชื่อว่า MAIN_INIT ให้ปฏิบัติตามคำสั่งถัดไป
3 เรียกไฟล์ bin/class.gcms.php เข้ามาร่วมทำงานเพื่อให้สามารถเรียกใช้งานคลาสต่างๆ ได้
4 เรียกไฟล์ bin/class.mysql.php เข้ามาร่วมทำงานเพื่อให้เรียกใช้งานคลาสที่ติดต่อกับ MySQL
5 สร้างอ็อปเจ็กท์โดยให้ชื่อว่า $db โดยใช้คลาส sql (ถูกสร้างไว้ในไฟล์ bin/class.mysql.php) และ
  ส่งค่าอากิวเม้นท์เป็นค่าที่ถูกประกาศไว้ใน bin/config.php
6 ประกาศตัวแปรชื่อ $time ค่าเท่ากับ $db->timer_start() เพื่อจับเวลาเริ่มต้นกระบวนการทำงาน
  (timer_start เป็นเมธอดของคลาส db ถูกสร้างขึ้นในบรรทัดที่ 219 ในไฟล์ bin/class.mysql.php)
7 เรียกไฟล์ "language/".LANGUAGE.".php" เข้ามาร่วมทำงานเพื่อแสดงภาษาตามที่ได้กำหนดไว้
8 ประกาศตัวแปรแบบอาร์เรโดยให้ชื่อว่า $meta ยังไม่กำหนดค่าใดๆ
9 ประกาศตัวแปรแบบอาร์เรโดยให้ชื่อว่า $script ยังไม่กำหนดค่าใดๆ
10 ประกาศตัวแปรแบบอาร์เรโดยให้ชื่อว่า $mainmenu ยังไม่กำหนดค่าใดๆ
11 ประกาศตัวแปรแบบอาร์เรโดยให้ชื่อว่า $install_modules ยังไม่กำหนดค่าใดๆ
12 ประกาศตัวแปรแบบอาร์เรโดยให้ชื่อว่า $install_owners ยังไม่กำหนดค่าใดๆ 
 
________________________________________________________________________________
================================================================================
หากเทียบกับ GCMS3 จะเห็นว่าโค้ดต่างๆ ที่อยู่ในไฟล์ index.php จะถูกย้ายมาไว้ที่ไฟล์นี้ทั้งหมดแต่หลายๆ ส่วน
ค่อนข้างเปลี่ยนแปลงไปพอสมควร แต่หากเรามองกรอบการทำงานออกก็พอจะช่วยให้เราเดาทางไปได้ง่ายขึ้น
^