习惯了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结构。