ข้ามไปยังเนื้อหา

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 ธรรมดา ซึ่งอาจจะดูผิดหลักการไปหน่อย แต่ก็สามารถทำได้ครับ แต่เนื่องจากโปรเจ็คนี้เป็นโปรเจ็คตัวอย่าง เลยต้องทำให้ถูกต้องเอาไว้ก่อน

^