Very Light Frame work is "Typoon" Ver.20200223. | TheoryOfContraints official blog

Very Light Frame work is "Typoon" Ver.20200223.

とりあえず、ライブラリの実装を進めてますが、バリデーターが沼だ…

ショボーン

 

で、簡易MVPパターンで組んでたけど、ADRパターンを知ったので、POSTでActionのモードを投げてソースリストを分岐で読み込む部分を追加して、Actionのソースを分割できる風に実装した

 

その部分のみをブログで公開しますよ。進捗は進んでます

 

[Typoon.php]

<?php
    /**
     * Very light framework is the "Typoon".
     * Ver.20200223.
     * @author kubohisa at pdbrec.com.
     */
    
    /**
     * Typoon Seting.
     */
    class TypoonReg
    {
        static $SessionName = "Hie4Ewxz";
        static $DomeinName = "localhost";
        
        static $HashDummyA = "esfdf4gesg";
        static $HashDummyB = "erg6gefbdr";
    }
    
    // Requires.
    require_once('../lib/typoon/stdio.phl'); // Smarty3.
    require_once('../lib/smarty/Smarty.class.php'); // Smarty3.
    
    /**
     * 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) {
        TypoonSTDIO::ErrorCode(500);
        exit;        
    }
    
    // Https check.
    // テスト環境ではhttpなので外してます
/*    if (empty($_SERVER['HTTPS'])) {
        TypoonSTDIO::ErrorCode(500);
        exit;        
    }
*/
    // 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);
    
    // Trim get.
    foreach ($UrlGet as $key => $value){
        $UrlGet[$key] = TypoonStrings::Trim($value);
    }

    // プレゼンテーターがあるか?
    if ($UrlGet['0'] == "") {
        $UrlGet['0'] = "index";
    }
    if (! empty($_POST['mode'])) {
        $UrlGet['0'] = $UrlGet['0']."@".$_POST['mode'];
    }
    if (! preg_match('/\A[a-zA-Z0-9\-\_\@]++\z/i', $UrlGet['0'])) {
        TypoonSTDIO::ErrorCode(404);
        exit;
    }
    if (! file_exists("presenter/".$UrlGet['0'].".present")) {
        TypoonSTDIO::ErrorCode(404);
        exit;
    }
    $PresentName = array_shift($UrlGet);
    
    // Seting Smarty.
    $smarty = new Smarty();
    $smarty->loadFilter('variable', 'htmlspecialchars');
    
    // 実行
    require_once("presenter/".$PresentName.".present");
    exit;
?>