MVC的核心思想是将一个应用分成三个基本部分:Model、View和Controller,这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
以下是我的代码
实例
<?php namespace { echo '<h3>单例模式</h3>'; class AAA { private static $name = null; //把构造方法和克隆方法设置为私有后,就是最简单的单例模式了 private function __construct() { } private function __clone() { } //创建一个公共的静态方法来允许外部的访问 public static function w() { //检查下当前的属性是否保存了当前的实例 if (self::$name == null) { self::$name = new self(); } //如果已经存在就直接返回当前的实例 return self::$name; } } $aaa = AAA::w(); $bbb = AAA::w(); var_dump($aaa === $bbb); echo '<hr>'; echo "<h3>mvc的设计模式</h3>"; } namespace mvc\model { //建立查询的模型实现代码的复用 class Model { public $pdo = null; public $result = [];//建立一个空数组用来保存数据库查询的结果集 public function __construct($dbname, $user, $pass) { //连接数据库 $this->pdo = new \PDO('mysql:host=127.0.0.1;dbname=' . $dbname, $user, $pass); } //查询 public function select($table, $num) { //创建预处理对象 $stmt = $this->pdo->prepare("SELECT `id`,`name`,`age`,`salary` FROM {$table} LIMIT :num"); //执行查询 $stmt->bindValue(':num', $num, \PDO::PARAM_INT); $stmt->execute(); $this->result = $stmt->fetchAll(\PDO::FETCH_ASSOC); } } } namespace mvc\view { //建立查询的视图实现代码的复用 class View { public $data = [];//创建一个空数据,到时候传入数据库查询的结果集 //模板赋值 public function __construct($data) { $this->data = $data; } //获取数据 public function getData()//通过外部数据传入数据库的结果集 { return $this->data; } //渲染模板 public function display($data) { $table = '<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <style> table,th,td { border: 1px solid black; } table { border-collapse: collapse; /*折叠表格线*/ width: 600px; margin: 30px auto; text-align: center; padding: 5px; } table tr:first-child { background-color: lightgreen; } table caption { font-size: 1.5em; margin-bottom: 15px; } </style> <title>MVC简介</title> </head> <body> <table> <caption>员工信息表</caption> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>工资</th> </tr>'; foreach ($data as $staff) {//遍历数据库的结果集生成表格 $table .= '<tr>'; $table .= '<td>' . $staff['id'] . '</td>'; $table .= '<td>' . $staff['name'] . '</td>'; $table .= '<td>' . $staff['age'] . '</td>'; $table .= '<td>' . $staff['salary'] . '</td>'; $table .= '</tr>'; } $table .= '</table></body></html>'; echo $table; } } } namespace mvc\controller { //建立控制器,通过控制器调用模型和视图的代码. use mvc\model\Model; use mvc\view\View; class Controller { public function index() { $model = new Model('php', 'root', 'root');//实例化模型模板调用模型模板中的方法执行数据库连接 $model->select('staff', 15);//查询数据 $result = $model->result;//返回出查询的结果数据 $view = new View($result);//实例花对象视图把数据库查询的结果作为参数传入 $data = $view->getData();//获取到数据库查询的结果集 $view->display($data);//进行模板的渲染 } } } namespace index { //建立mvc模型的入口文件 use mvc\controller\Controller; $controller = new Controller;//实例化控制器 $controller->index();//执行控制器的首页方法 }
运行实例 »
点击 "运行实例" 按钮查看在线实例