欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-05 12:09:41
...

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

相关标签: MVC