PHP实例:实现超级简单的MVC结构

原创
2016-06-21 08:56:56 692浏览

下面是一个超级简单的MVC结构实现,甚至连数据源都用了一个内置的固定数组,虽然简单,但其实众多的PHP Framework核心实现的思想应该和这个是差不多的

只不过一些framework提供了更多的方便开发者使用的工具,我也想自己来实现一个PHP的 框架,目前正在着手策划中,也希望自己能够从框架的开发中学习到更多的PHP设计思想和方法。

Controller.php

include 'Model.php';
include 'View.php';

class Controller {
private $model = '';
private $view = '';

public function Controller(){
$this->model = new Model();
$this->view = new View();
}

public function doAction( $method = 'defaultMethod', $params = array() ){
if( empty($method) ){
$this->defaultMethod();
}else if( method_exists($this, $method) ){
call_user_func(array($this, $method), $params);
}else{
$this->nonexisting_method();
}
}

public function link_page($name = ''){
$links = $this->model->getLinks();
$this->view->display($links);

$result = $this->model->getResult($name);
$this->view->display($result);
}

public function defaultMethod(){
$this->br();
echo "This is the default method. ";
}

public function nonexisting_method(){
$this->br();
echo "This is the noexisting method. ";
}

public function br(){
echo "
";
}
}


$controller = new Controller();
$controller->doAction('link_page', 'b');
$controller->doAction();


Model.php


Code
class Model {
private $database = array(
"a" => "hello world",
"b" => "ok well done",
"c" => "good bye",
);

//@TODO connect the database

//run the query and get the result
public function getResult($name){
if( empty($name) ){
return FALSE;
}

if( in_array($name, array_keys( $this->database ) ) ){
return $this->database[$name];
}
}

public function getLinks(){
$links = "Link A ";
$links.= "Link B ";
$links.= "Link C ";

return $links;
}
}

View.php


class View {

public function display($output){
// ob_start();

echo $output;
}

}



声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。