返回
php的MVC框架详解及简易mvc框架的实现

mvc框架是什么?

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。


mvc框架的简易实现

image.png

mvc/model.php

<?php
class model{
	public function __construct(){
		
	}
}
?>

 mvc/view.php

<?php
class view{
	public $template_dir   = '';
	public $_var=array();
	public function __construct($template_dir=""){
		$this->template_dir=$template_dir;
	}
	
	public function assign($var,$value=""){
		if(is_array($var)){
			foreach($var as $k=>$v){
				$this->_var[$k]=$v;
			}
		}else{
			$this->_var[$var]=$value;
		}
	}
	
	public function display($filename){
		extract($this->_var);
		if(!file_exists($this->template_dir."/".$filename))  exit($filename."模板不存在");
		require $this->template_dir."/".$filename;
	}
}
?>

    mvc/control.php

<?php
require "model.php";
require "view.php";
$m=isset($_GET['m'])?$_GET['m']:"index";
$a=isset($_GET['a'])?"on".$_GET['a']:"onDefault";
require "app/control/$m.ctrl.php";
$mctrl=$m."control";
$ctrl=new $mctrl();
$ctrl->$a();

function M($model){
	require_once "app/model/".$model.".model.php";
	$mdclass=$model."model";
	$model=new $mdclass();
	return $model; 
}
class control{
	public $view;
	public function __construct(){
		$this->view();
	}
	public function View(){
		$this->view=new view("app/view");
		//view::init("app/view");
	}
	
	 
}
?>

app/control/index.ctrl.php

<?php
class indexControl extends control{
	
	public function __construct(){
		parent::__construct();
	}
	
	public function onDefault(){
		$data=array(
			"1"=>"人才",
			"2"=>"时间",
			3=>"执行力"
		);
		$this->view->assign(array(
			"data"=>$data,
			"row"=>M("data")->getRow()
		));
		$this->view->display("index.html");
	}
	
}
?>

app/model/data.model.php

<?php
class dataModel extends model{
	
	public function __construct(){
		parent::__construct();
	}
	
	public function getRow(){
		return array("这是获取一行");
	}
	
	public function getAll(){
		return array(
			1=>array(
				"id"=>1,
				"title"=>"第一行数据"
			),
			2=>array(
				"id"=>2,
				"title"=>"第二行数据"
			)
		);
	}
}
?>

app/view/index.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>php的MVC框架讲解</title>
	</head>
	<body>
		<div>MVC</div>
		<div class="list">
			<?php foreach($data as $v):?>
				<div>
					<?=$v?>
				</div>
			<?php endforeach;?>	
		</div>
		<div class="row">
			<?=$row[0]?>
		</div>
	</body>
</html>

index.php

<?php
require "mvc/control.php";
?>

mvc.zip