模块简单设计——实现一个简单的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