php 简单的mvc结构实现

习惯了java、asp.net的mvc结构,所以用php时也想使用mvc结构,所以自己研究了一下,下面是我的研究成果:

1、首先实现网站的单一入口index.php,在这里获取请求参数,创建对应的controller,并实现页面的“跳转”。index.php代码如下:

<?php

	//引入类
	require_once('commons/config.php');	//网站配置文件

	//获取参数
	$c_str = isset($_GET['c']) ? $_GET['c'] : 'Index';	//获取controller
	$c_name = $c_str . 'Controller';	//获取controller名字
	$c_path = 'controller/' . $c_name . '.php';	//获取controller路径
	$a_str = isset($_GET['a']) ? $_GET['a'] : 'index';	//获取action

	//判断文件是否存在
	if(!file_exists($c_path)){
		echo 'file [ ' . $c_path . ' ] not found!';
		return;
	}
	require($c_path);	//引入文件

	//判断controller是否存在
	if(!class_exists($c_name)){
		echo 'class [ ' . $c_name . ' ] not found!';
		return;
	}
	$controller = new $c_name;	//创建controller

	//判断类中方法是否存在
	if(!method_exists($controller, $a_str)){
		echo 'method [' . $a_str . '] not found';
		return;
	}

	$controller -> $a_str();	//调用方法
?>

2、创建controller,比如我们请求www.***.com/?c=Index&a=list时,就会创建IndexController,并调用controller中的list方法,controller代码如下:

<?php

	class IndexController{
		function index(){
			echo "index";
		}

		function list(){
			$data['list'] = 'data';
			require('view/List.php');
		}
	}

?>

3、创建视图List.php,调用list方法之后会动态的引入List.php,并传入参数 $data[‘list’]。List.php代码:

<?php

    echo(data['list']);

?>

这样就实现了简单的mvc结构。

发表评论