博客列表 >12月6号作业 MVC小案例

12月6号作业 MVC小案例

遗忘了寂寞
遗忘了寂寞原创
2019年12月11日 21:04:54540浏览

文件目录

controller/StaffsController.php

  1. <?php
  2. // 控制器
  3. class StaffsController
  4. {
  5. //获取全部数据
  6. public function listAll()
  7. {
  8. //实例化模型,获取数据
  9. $sta = new StaffsModel();
  10. $data = $sta->getAll();
  11. require 'view/StaffslistAll.php';
  12. }
  13. //获取单条数据
  14. public function info($id=1)
  15. {
  16. $id = isset($_GET['id']) ? $_GET['id'] : $id;
  17. $sta = new StaffsModel();
  18. $data = $sta->get($id);
  19. require 'view/Staffslistinfo.php';
  20. }
  21. }

model/db.php

  1. <?php
  2. //数据库的基本操作
  3. class Db
  4. {
  5. //数据库的基本参数
  6. private $dbConfig=[
  7. 'type' => 'mysql', //数据库类型
  8. 'host' => 'localhost', //服务器地址
  9. 'dbname' => 'tj_ys', //数据库名称
  10. 'username' => 'root', //用户名
  11. 'password' => '123123' //密码
  12. ];
  13. //单例模式,保存本类实例
  14. private static $instance = null;
  15. //保存数据库连接实例
  16. private static $conn = null;
  17. //新增ID
  18. public $insertID = null;
  19. //受影响的数量
  20. public $num = 0;
  21. //构造方法私有化,
  22. private function __construct($params)
  23. {
  24. //初始化连接参数
  25. $this->dbConfig = array_merge($this->dbConfig,$params);
  26. //连接数据库
  27. $this->connect();
  28. }
  29. //克隆方法私有化,
  30. private function __clone()
  31. {
  32. }
  33. //获取当前类的单一实例
  34. public static function getInstance($params=[])
  35. {
  36. if(!self::$instance instanceof self){
  37. self::$instance=new self($params);
  38. }
  39. return self::$instance;
  40. }
  41. //数据库连接
  42. private function connect()
  43. {
  44. try {
  45. //连接参数
  46. $dsn = "{$this->dbConfig['type']}:host={$this->dbConfig['host']};dbname={$this->dbConfig['dbname']}";
  47. //数据库连接
  48. $this->conn = new PDO($dsn, $this->dbConfig['username'], $this->dbConfig['password']);
  49. } catch (PDOException $e) {
  50. die('连接失败' . $e->getMessage());
  51. }
  52. }
  53. //数据表的写操作,新增、更新、删除
  54. //返回受影响的记录数,如果是新增返回新增ID
  55. public function exec($sql)
  56. {
  57. $num = $this->conn->exec($sql);
  58. if ($num > 0){
  59. // 如果是新增返回新增ID
  60. if ($this->conn->lastInsertId() !== null){
  61. $insertID = $this->conn->lastInsertId();
  62. }
  63. $this->num = $num; //返回受影响的数量
  64. }else{
  65. $error = $htis->conn->errorInfo(); //获取最后操作的错误信息的数组
  66. //[0]:错误标识符;[1]:错误代码;[2]:错误信息
  67. print '操作失败' . $error[0] . ': ' . $error[1] . ': ' . $error[2];
  68. }
  69. }
  70. //查询操作:获取单条数据
  71. public function fetch($sql)
  72. {
  73. return $this->conn->query($sql)->fetch(PDO::FETCH_ASSOC);
  74. }
  75. //查询操作:获取多条数据
  76. public function fetchAll($sql)
  77. {
  78. return $this->conn->query($sql)->fetchAll(PDO::FETCH_ASSOC);
  79. }
  80. }

model/Model.php

  1. <?php
  2. //公共模型
  3. class Model
  4. {
  5. protected $db = null; //数据库连接对象
  6. public $data = null; //当前数据内容
  7. public function __construct()
  8. {
  9. $this->init(); //完成数据连接
  10. }
  11. private function init()
  12. {
  13. $dbConfig=[
  14. 'dbname' => 'tj_ys', //数据库名称
  15. 'username' => 'root', //用户名
  16. 'password' => '123123'
  17. ];
  18. $this->db = Db::getInstance($dbConfig);
  19. }
  20. //获取全部数据
  21. public function getAll()
  22. {
  23. $sql="SELECT * FROM staffs";
  24. return $this->data = $this->db->fetchAll($sql);
  25. }
  26. //获取全部数据
  27. public function get($id)
  28. {
  29. $sql="SELECT * FROM staffs WHERE id = {$id}";
  30. return $this->data = $this->db->fetch($sql);
  31. }
  32. }

model/StaffsModel.php

  1. <?php
  2. // 用户自定义模型
  3. class StaffsModel extends Model
  4. {
  5. }

view/StaffslistAll.php

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title></title>
  8. <style>
  9. table {border-collapse: collapse; border: 1px solid; width: 500px;height: 150px}
  10. caption {font-size: 1.2rem; margin-bottom: 10px;}
  11. tr:first-of-type { background-color:lightblue;}
  12. td,th {border: 1px solid}
  13. td:first-of-type {text-align: center}
  14. </style>
  15. </head>
  16. <body>
  17. <table>
  18. <caption><h2>人物信息表</h2></caption>
  19. <tr>
  20. <th>ID</th>
  21. <th>姓名</th>
  22. <th>职位</th>
  23. <th>操作</th>
  24. </tr>
  25. <?php foreach($data as $data_sta): ?>
  26. <tr>
  27. <td><?php echo $data_sta['id']; ?></td>
  28. <td><?php echo $data_sta['name']; ?></td>
  29. <td><?php echo $data_sta['position']; ?></td>
  30. <td><a href="index.php?a=info&id=<?php echo $data_sta['id']; ?>">查看详情</a></td>
  31. </tr>
  32. <?php endforeach; ?>
  33. </table>
  34. 总计:<?php echo count($data); ?>条记录
  35. </body>
  36. </html>

view/Staffslistinfo.php

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title></title>
  8. <style>
  9. table {border-collapse: collapse; border: 1px solid; width: 500px;height: 150px}
  10. caption {font-size: 1.2rem; margin-bottom: 10px;}
  11. td,th {border: 1px solid}
  12. td:first-of-type {text-align: center}
  13. </style>
  14. </head>
  15. <body>
  16. <table>
  17. <caption><h2><?php echo $data['name']; ?>个人信息表</h2></caption>
  18. <tr>
  19. <th>ID</th>
  20. <th><?php echo $data['id']; ?></th>
  21. </tr>
  22. <tr>
  23. <th>姓名</th>
  24. <th><?php echo $data['name']; ?></th>
  25. </tr>
  26. <tr>
  27. <th>年龄</th>
  28. <th><?php echo $data['age']; ?></th>
  29. </tr>
  30. <tr>
  31. <th>性别</th>
  32. <th><?php echo $data['sex']; ?></th>
  33. </tr>
  34. <tr>
  35. <th>职位</th>
  36. <th><?php echo $data['position']; ?></th>
  37. </tr>
  38. </table>
  39. <a href="index.php?a=listAll">显示全部信息</a>
  40. </body>
  41. </html>

index.php

  1. <?php
  2. //入口文件
  3. //加载模型类
  4. require 'model/db.php';
  5. require 'model/Model.php';
  6. require 'model/StaffsModel.php';
  7. //获取控制器名称
  8. $controller = isset($_GET['c']) ? $_GET['c'] : 'Staffs';
  9. //控制器加后缀
  10. $controller .='Controller';
  11. //加载控制器类
  12. require 'controller/' . $controller . '.php';
  13. // 获取方法
  14. $action = isset($_GET['a']) ? $_GET['a'] : 'listAll';
  15. $Sta = new $controller();
  16. $Sta->$action();

运行图

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议