phpマイクロ過ぎるフレームワーク”Typoon” Ver.20200216. | TheoryOfContraints official blog

phpマイクロ過ぎるフレームワーク”Typoon” Ver.20200216.

お久しぶりです、くぼひさです

 

暇なので、作り始めました。仮組みのプログラムぼろぼろで凄いよね…

笑い泣き

 

とりあえず、ルーティングの部分のみを作りました。以下がソースですよ。後はバリデーションなどのメゾットを追加します

 

良い暇つぶしになりそうだ

 

[typoon.php]

<?php
    /**
     * Very light framework is the "Typoon".
     * Ver.20200216.
     * @author kubohisa at pdbrec.com.
     */
    
    /**
     * Typoon Seting.
     */
    class TypoonReg
    {
        static $SessionName = "Hie4Ewxz";
        static $DomeinName = "localhost";
    }
    
    /**
     * Start Typoon IPL.
     */
    
    // null.
    function sanitizer($arr) {
        if (is_array($arr) ){
            return array_map('sanitizer', $arr);    
        }
        return str_replace("\0", "", $arr);
    }
    $_POST = sanitizer($_POST);
    $_COOKIE = sanitizer($_COOKIE);
    $_SERVER = sanitizer($_SERVER);
    $_GET = array(); // Delete gets.
    
    // Domain check.
    if ($_SERVER['SERVER_NAME'] != TypoonReg::$DomeinName) {
        header('HTTP', true, 500);
        exit;        
    }
    
    // Https check.
    // テスト環境ではhttpなので外してます
/*    if (empty($_SERVER['HTTPS'])) {
        header('HTTP', true, 500);
        exit;        
    }
*/
    // Requires.
    require_once('../lib/smarty/Smarty.class.php'); // Smarty3.
    
    // md Setting.
    mb_language("Japanese");
    mb_internal_encoding("UTF-8");
    
    // セッションIDリセット
    session_name(TypoonReg::$SessionName);
    session_start();
    session_regenerate_id(true);
    
    // Get Get.
    $UrlGet = preg_split("/\//", $_SERVER["REQUEST_URI"]);
    array_shift($UrlGet);

    // プレゼンテーターがあるか?
    if ($UrlGet['0'] == "") {
        $UrlGet['0'] = "index";
    }
    if (! preg_match('/\A[a-zA-Z0-9\-\_]+\z/i', $UrlGet['0'])) {
        header('HTTP', true, 404);
        exit;
    }
    if (! file_exists("presenter/".$UrlGet['0'].".present")) {
        header('HTTP', true, 404);
        exit;
    }
    $PresentName = array_shift($UrlGet);
    
    // exec.
    require_once("presenter/".$PresentName.".present");
    exit;
?>