「Model」「View」「Controller」の3つで処理の役割分担をするというのはなんとなくわかる。



なんとなくなのでハッキリとはわからない。
分け方に正解があるのかもわからない。



「Model」にはそのサイトのデータ処理を関数分けして羅列


「View」はどのテンプレートを使い置換処理があれば施して表示させる処理に特化させるのでほとんど改変は要らないかと。。


「Controller」は受け取ったフォームデータに必要な処理があれば施して「Model」に書いた関数を呼び出すことで実行を制御して最後に「View」に処理を任せる。



「Model」がいわゆるビジネスロジックと言われるメイン処理ということになりそうなのでコード量が多くなりそうな感じ



とりあえず書いてみました。
参考にしたのはZendのコーディング指針のページ


クラス化しないで一つのファイルに単純に関数分けしただけなので、今後これをクラス化して洗練させていきたいと思います。



■default.tpl

<html>
<body>

<h3>私の名前は%replace1%です。</h3>

</body>
</html>



■mvc.php

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);


$gl= array();



// ビジネスロジック
function model($func)
{
    global $gl;
    $gl['template']= 'default.tpl';
    $gl['errtpl']= 'error.tpl';


    function func1()
    {
        global $gl;
        $gl['replace1']= "太郎";
    }


    return $func();
}
function view()
{
    global $gl;
    $tpl= empty($gl['errmsg']) ? $gl['template'] : $gl['errtpl'];
    $html= file_get_contents($tpl);


    echo preg_replace('/%(\w+)%/e', 'isset($gl["$1"]) ? $gl["$1"] : ""', $html);
    exit;
}
function controller($func)
{
    view(model($func));
}



controller("func1");


?>