เริ่มต้นใช้งานเฟรมเวิร์ค
องค์ประกอบแรกที่ทุกแอพพลิเคชั่นต้องมีก็คือหน้าแรกของเว็บไซต์ หรือ index.php นั่นเอง ซึ่งไฟล์นี้จะเป็นจุดเริ่มต้นทั้งหมดของแอพพลิเคชั่น การเรียกใช้งานคชสารจะต้องผ่านไฟล์นี้ก่อนทั้งสิ้น
// โหลดคชสาร
include 'Kotchasan/load.php';
// เริ่มต้นใช้งานคชสาร
$app = Kotchasan::createWebApplication();
// รันแอพพลิเคชั่น
$app->run();
โค้ดหลักๆของ คชสารจะมีประมาณด้านบน
ก่อนการใช้งานคชสารก็ต้องมีการเตรียมไฟล์สำหรับเริ่มต้นการใช้งานคชสารกันก่อน โดยการ include 'Kotchasan/load.php'; เข้าไปในแอพพลิคั่น ซึ่งที่ไฟล์นี้คชสารจะทำการโหลดส่วนประกอบที่จำเป็นเตรียมไว้ให้
ถัดมาเป็นคำสั่งเริ่มต้นใช้งานแอพพลิเคชั่น $app = Kotchasan::createWebApplication(); คำสั่งนี้จะสั่งให้คชสารโหลดแอพพลิเคชั่นและสร้าง instance ของแอพพลิเคชั่นขึ้นมา ซึ่งเมธอด createWebApplication จะมีพารามิเตอร์ 1 ตัวคือ $cfg สำหรับระบุค่ากำหนดของแอพพลิเคชั่นที่ต้องการ ซึ่งหากไม่มีการระบุพารามิเตอร์มา คชสารจะใช้ค่ากำหนดเริ่มต้นของคชสารที่ \Kotchasan\Config แทน ตัวอย่าง
$app = Kotchasan::createWebApplication(Gcms\Config::create());
หมายความว่า แอพพลิเคชั่นจะมีการใช้ค่ากำหนดจาก Gcms\Config ในการทำงาน ซึ่ง Gcms\Config เองก็ต้องสืบทอด (inherit) มาจาก Kotchasan\Config อีกทีเช่นกัน
ในการเรียกใช้งานคชสารจะมีตัวแปรเริ่มต้น 2 ตัวที่เกี่ยวข้องคือ
Kotchasan::$defaultController ซึ่งค่าเริ่มต้นคือ Index\Index\Controller ซึ่งหมายความว่าเมื่อสั่งรันแอพพลิเคชั่นแล้วไฟล์ Controller หลักที่จะถูกเรียกใช้งานก็คือ Index\Index\Controller นั่นเอง และเมธอดปริยายที่จะถูกเรียกใช้ก็คือเมธอด index หากเราต้องการให้คชสารทำการเรียกไปยังคอนโทรเลอร์อื่น สามารถทำได้โดยการระบุคอนโทรลเลอร์ที่ต้องก่อนการเรียกใช้คำสั่ง run()
$app = Kotchasan::createWebApplication();
$app->defaultController = 'Index\Export\Controller';
$app->run()
ซึ่งหมายความว่าเมื่อสั่ง run() แล้วคชสารจะเรียกไปยัง Index\Export\Controller::index() แทน
คชสารมีการกำหนดรูปแบบพารามิเตอร์ของ URL ไว้ให้เรียกใช้งานได้ทันทีอยู่แล้ว ซึ่งจะถูกกำหนดโดย Router ของคชสาร ซึ่ง Router ของคชสารมีความสามารถเริ่มต้นในการแยก URL สำหรับเว็บไซต์พื้นฐานทั่วไปอย่างพอเพียง (ผมออกแบบ Router โดยคำนึงถึงความปลอดภัยเป็นหลักโดยมุ่งเน้นไปที่ URL เฉพาะตามรูปแบบพื้นฐานของ GCMS เท่านั้น) แต่หาก URL ที่ได้ไม่เหมาะสมสำหรับแอพพลิคั่นที่ต้องการก็สามารถกำหนดกฏของ Router ใหม่ได้โดยการสืบทอดคลาส Router จาก Kotchasan\Router เป็นคลาสใหม่ แล้วทำการกำหนดให้คชสารรู้จัก Router ใหม่ก่อนการเรียกคำสั่ง run()
$app = Kotchasan::createWebApplication();
$app->defaultRouter = 'Gcms\Router';
$app->run()
ตัวอย่างการกำหนดกฏของ Router ใหม่
namespace Gcms;
class Router extends \Kotchasan\Router
{
/**
* กฏของ Router สำหรับการแยกหน้าเว็บไซต์
*
* @var array
*/
protected $rules = array(
// index.php/Widgets/Textlink/Models/Write/save
'/^[a-z0-9]+\.php\/(Widgets\/[a-z]+\/Models\/[a-z]+)\/([a-z]+)$/i' => array('_class', '_method'),
// index.php/module/model/folder/_dir/_method
'/^[a-z0-9]+\.php\/([a-z]+)\/(model)(\/([\/a-z0-9_]+)\/([a-z]+))?$/i' => array('module', '_mvc', '', '_dir', '_method'),
// css, js
'/(css|js)\/(view)\/(index)/i' => array('module', '_mvc', '_dir'),
// antispam image
'/(index)\/(view)\/(antispam)/i' => array('module', '_mvc', '_dir'),
// install
'/index\.php\/(index)\/(controller)\/(installing)/i' => array('module', '_mvc', '_dir'),
// module/cat/id
'/^([a-z]+)\/([0-9]+)\/([0-9]+)$/' => array('module', 'cat', 'id'),
// module/cat module/alias, module/cat/alias
'/^([a-z]+)(\/([0-9]+))?(\/(.*))?$/' => array('module', '', 'cat', '', 'alias'),
// module, module.php
'/^([a-z0-9_]+)(\.php)?$/' => array('module'),
// alias
'/^(.*)$/' => array('alias')
);
}
การกำหนดกฏของ Router จะทำที่ตัวแปร $rules ซึ่งหากต้องการแก้ไขกฏใดๆจะต้องนำกฏเก่าทั้งชุดมาแก้ไขด้วย เนื่องจากกฏเดิมที่ถูกสืบทอดมาแล้วจะไม่มีการนำกลับมาใช้อีก
นอกจากนี้เรายังสามารถกำหนดไฟล์เริ่มต้นของคชสารเป็นไฟล์อื่นๆ ได้อีก โดยการกำหนดร่วมกับคอนโทรลเลอร์ที่ต้องการเพื่อแยกการทำงานของแต่ละไฟล์ออกจากกัน เช่น index.php ใช้คอนโทรลเลอร์หลัก และ print.php ให้เรียกไปยัง Index\Export\Controller สำหรับเขียนคำสั่งเพื่อสั่งพิมพ์หน้าเป็นต้น (หมายเหตุ ไม่สามารถใช้ Print เป็นชื่อคลาสได้เนื่องจากเป็นชื่อสงวน)