`

模块简单设计——实现一个简单的MVC框架

MVC 
阅读更多

A,首先分别实现MVC的基类以及路由模块

 

控制器(controller.inc)

<?php
class Controller
{
        private static $instance;

        public function __construct()
        {
                self::$instance =& $this;
        }

        public static function &get_instance()
        {
                return self::$instance;
        }
}
?>

模型(model.inc)

<?php
class Model
{
        private static $instance;

        public function __construct()
        {
                self::$instance =& $this;
        }

        public static function &get_instance()
        {
                return self::$instance;
        }
}
?>

路由(router.inc)

<?php
require_once("testcontroller.php");
class Router
{
        static public function route(){

                $request_uri = $_SERVER["REQUEST_URI"];

                $params = explode("/",$request_uri);

                $e_class = substr($params[1],strpos($params[1],"?")+1);
                $e_method = $params[2];

                $inputs = array();
                for($i = 3;$i < count($params);$i += 2){
                        $inputs[$params[$i]] = $params[$i+1];
                }

                $c = new $e_class;
                $c->$e_method($inputs);
        }
};
?>

 框架入口(index.php)

<?php

require_once("router.inc");

Router::route();

?>

通过上面的一点代码,一个简单的MVC结构就搭建好了

B,下面来具体使用了试试,创建一个自定义model,controller以及视图view

自定义视图(view.tpl)

<html>
<head>
        <title>test page</title>
</head>
<body>

<h1><?php
        echo $message;
?></h1>

</body>
</html>

 自定义控制器(testcontroller.php)

<?php
require_once("controller.inc");
require_once("test_model.php");

class test_controller extends Controller
{
    public function find($input){
        $model = new test_model();
        $res = $model->select($input["id"]);
        $message = $res["msg"];

        //var_dump($message);
        include_once("view.tpl");
    }
}
?>

 自定义模型(test_model.php)

<?php
require_once("model.inc");
class test_model extends Model
{
    public function select($id){

        //select * from [table_name]

        return array(
            "id" => $id,
            "msg" => "test message"
        );
    }
}
?>

 这里我没有实现数据库操作类,只是简单的模拟以下,把上面这些文件放到网站根目录下,测试如下的链接

http://localhost/index.php?test_controller/find/id/6

其中test_controller是控制器,find是调配函数,后面的id和6是传递参数

 

大家可以学习一下php的一些简单易用的MVC框架:codeigniter thinkphp

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics