参考:
1. http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/
2. http://anantgarg.com/2009/03/30/write-your-own-php-mvc-framework-part-2/
实例:
Controller.php
<?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 = '')
{
if(empty($method))
{
$this->defaultMethod();
}
else if(method_exists($this, $method))
{
call_user_func(array($this, $method), $params);
}
else
{
$this->noexisting_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 '<br />';
}
}
$controller = new Controller();
$controller->doAction('link_page', 'b');
$controller->doAction();
Model.php
<?php
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
<?php
class View
{
public function display($output)
{
//ob_start();
echo $output;
}
}