Welcome
หน้าต้อนรับของ Somtum Framework
projects/welcome/
โปรเจ็คนี้เป็นตัวอย่างการใช้งาน Somtum Framework อย่างง่าย มีแค่ Controller และ View อย่างละหนึ่ง เพื่อแสดงผลหน้าต้อนรับเท่านั้น
<?php
/**
* @filesource projects/welcome/index.php.
*
* @author Goragod Wiriya <admin@goragod.com>
* @copyright 2018 Goragod.com
* @license https://somtum.kotchasan.com/license/
*
* @see https://somtum.kotchasan.com/
*/
/**
* 0 (default) ปิดการแสดงผลข้อผิดพลาดของ PHP
* 2 แสดงผลข้อผิดพลาดและคำเตือนออกทางหน้าจอ (ใช้เฉพาะตอนออกแบบเท่านั้น).
*/
define('DEBUG', 0);
// load Somtum
include '../../Somtum/load.php';
// Initial Somtum Framework
Somtum::createWebApplication()->run();
ไฟล์แรก index.php เป็นไฟล์แรกสุดเมื่อการเรียกมายังเว็บเพจ ไฟล์นี้ทำหน้าที่ในการเริ่มต้นรันแอพพลิเคชั่น มีคล้ายๆกันในแทบจะทุกโปรเจ็ค เมื่อสั่ง run() ก็จะไปเรียก defaultController มาทำงาน
<?php
/**
* @filesource Modules/Index/Controllers/Index.php
*
* @copyright 2018 Goragod.com
* @license https://somtum.kotchasan.com/license/
*
* @see https://somtum.kotchasan.com/
*/
namespace Index\Index;
use Somtum\Http\Request;
/**
* default Controller.
*
* @author Goragod Wiriya <admin@goragod.com>
*
* @since 1.0
*/
class Controller extends \Somtum\Controller
{
/**
* เรียกใช้งาน defaultController.
*
* @param Request $request
*/
public function index(Request $request)
{
echo createClass('Index\Index\View')->render();
}
}
โปรเจ็คนี้ไม่มีการเปลี่ยน defaultController เป็นอย่างอื่น ดังนั้น \Index\Index\Controller จึงถูกเรียกมาใช้งาน ซึ่งจะเรียกไปที่เมธอด index ซึ่งใน Controller ทำหน้าที่แค่เรียก View มาแสดงผลเท่านั้น
<?php
/**
* @filesource Modules/Index/Views/Index.php
*
* @copyright 2018 Goragod.com
* @license https://somtum.kotchasan.com/license/
*
* @see https://somtum.kotchasan.com/
*/
namespace Index\Index;
/*
* default View
*
* @author Goragod Wiriya <admin@goragod.com>
*
* @since 1.0
*/
class View extends \Somtum\View
{
/**
* แสดงผลหน้า Welcome.
*
* @return string
*/
public function render()
{
$content = '<html style="height:100%;width:100%"><head>';
$content .= '<meta charset=utf-8>';
$content .= '<link href="https://fonts.googleapis.com/css?family=Unica+One" rel="stylesheet">';
$content .= '<meta name=viewport content="width=device-width, initial-scale=1.0">';
$content .= '<style>';
$content .= '.warper{display:inline-block;text-align:center;height:50%;}';
$content .= '.warper::before{content:"";display:inline-block;height:100%;vertical-align:middle;width:0px;}';
$content .= '</style>';
$content .= '</head><body style="height:100%;width:100%;margin:0;font-family:\'Unica One\', cursive, Tahoma, Loma;color:#666;">';
$content .= '<div class=warper style="display:block"><div class="warper"><div>';
$content .= '<h1 style="line-height:1;margin:0;text-shadow:3px 3px 0 rgba(0,0,0,0.1);font-weight:normal;font-size:80px;">SOMTUM</h1>';
$content .= 'PHP Micro Framework';
$content .= '</div></div></body></html>';
return $content;
}
}
สุดท้าย \Index\Index\View จะเห็นว่าเป็นการคืนค่า HTML ที่เป็นเนื้อหาของเพจเท่านั้น ซึ่งเนื้อหาจะถูกส่งกลับไปยัง defaultController เพื่อแสดงผลต่อไป
ถ้าสังเกตุจะเห็นว่าความจริงเราไม่ต้องมี View ก็ได้ เราสามารถ echo ที่ Controller ก็ได้ผลลัพท์แบบเดียวกัน เพราะมันก็แค่การเขียนแบบ PHP ธรรมดา ซึ่งอาจจะดูผิดหลักการไปหน่อย แต่ก็สามารถทำได้ครับ แต่เนื่องจากโปรเจ็คนี้เป็นโปรเจ็คตัวอย่าง เลยต้องทำให้ถูกต้องเอาไว้ก่อน