批改状态:合格
老师批语:
单例模式
<?php
//单例模式
class config
{
private static $instance = null;
// 配置参数容器
public $setting = [];
// 禁止从类的外部实例化对象
private function __construct()
{
}
//克隆方法也私有化
private function __clone()
{
// TODO: Implement __clone() method.
}
//外部仅允许通过一个公共静态方法来创建实例
public static function getInstance()
{
//检测当前的类属性$instance是否已经保存了当前类的实例
if (self::$instance == null){
self::$instance = new self();
}
// 如果已经存在当前类的实例,返回当前类的实例
return self::$instance;
}
// 配置项的设置操作
public function set()
{
//获取参数的数量
$num = func_num_args();
if ($num > 0){
switch ($num){
case 1: // 如果只有一个参数,说明这是一个数组
$value = func_get_arg(0);
if (is_array($value)){
$this->setting = array_merge($this->setting,$value);
}
break;
case 2:
$name = func_get_arg(0); // 配置项的键
$value = func_get_arg(1); // 配置项的值
$this->setting[$name] = $value;
break;
default:
echo '<span style="color:red">非法参数</span>';
}
}else{
echo '<span style="color:red">没有参数</span>';
}
}
// 获取参数: 当无参数的时候,默认获取全部参数
public function get($name=''){
if (empty($name)){
//获取所有参数
return $this->setting;
}
// 获取某一个参数
return $this->setting[$name];
}
}
$obj = config::getInstance();
$obj1 = config::getInstance();
var_dump($obj1 === $obj);
echo '<hr>';
$config = ['host'=>'localhost','user'=>'root','pass'=>'root'];
$obj->set($config);
print_r($obj->get());点击 "运行实例" 按钮查看在线实例

MVC的实现原理
实例
<?php
//模型类
namespace mvc\model;
class Model
{
private $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 `staff_id`,`name`,`age`,`salary` FROM {$table} LIMIT :num");
//执行查询
$stmt->bindValue(':num',$num,\pdo::PARAM_INT);
$stmt->execute();
//获取结果
$this->result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
}
<?php
//视图类
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: dodgerblue;
}
table caption{
font-size: 1.4rem;
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['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;
}
}
<?php
//控制器类
namespace mvc\controller;
use mvc\model\Model;
use mvc\view\View;
class Controller
{
public function index()
{
require './model/Model.php';
$model = new Model('php','root','root');
$model->select('staff',8);
$result = $model->result;
require './view/View.php';
$view = new View($result);
$data = $view->getData();
$view->display($data);
}
}
<?php
//入口文件
require 'controller/Controller.php';
use mvc\controller\Controller;
$controller = new Controller();
$controller->index();
运行实例 »
点击 "运行实例" 按钮查看在线实例
MVC的设计思想是什么?
MVC是一种软件架构的思想,将一个软件按照模型、视图、控制器进行划分。其中,模型用来封装业务逻辑,视图用来实现表示逻辑,控制器用来协调模型与视图(视图要通过控制器来调用模型,模型返回的处理结果也要先交给控制器,由控制器来选择合适的视图来显示 处理结果)。
1)模型: 业务逻辑包含了业务数据的加工与处理以及相应的基础服务(为了保证业务逻辑能够正常进行的事务、安全、权限、日志等等的功能模块)
2)视图:展现模型处理的结果;另外,还要提供相应的操作界面,方便用户使用。
3)控制器:视图发请求给控制器,由控制器来选择相应的模型来处理;模型返回的结果给控制器,由控制器选择合适的视图。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号