博客列表 >8.6mvc依赖注入

8.6mvc依赖注入

55555的博客
55555的博客原创
2019年08月07日 17:47:00747浏览

1、模型类Model.php

<?php
/**
 * 模型类:用于数据库操作,数据访问
 */

//require __DIR__ . '\inc\connect.php';

class Model
{
    public function getData(){
        $dsn = 'mysql:host=127.0.0.1;dbname=vmall';
        $uname = 'root';
        $pw = '';

        $sql = "SELECT `pro_id`, `name`, `price`, `num` FROM `product` LIMIT 5";
        $pdo = new PDO($dsn, $uname, $pw,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
        $result = $stmt -> fetchAll(PDO::FETCH_ASSOC);

//        print_r($result);die;
        return $result;
    }

    public function getData2(){
        $sql = "SELECT `pro_id`, `name`, `price`, `num` FROM `product` LIMIT 5";
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
        $result = $stmt -> fetchAll(PDO::FETCH_ASSOC);

        print_r($result);die;
        return $result;

    }
}


2、视图类:渲染数据 View.php

<?php

//   视图类:渲染数据

class View
{
    public function fetch($data)
    {
        $table = '<table border="1" cellspacing="0" cellpadding="3" width="400">';
        $table .= '<caption>商品信息表</caption>';
        $table .= '<tr bgcolor="#add8e6"><th>ID</th><th>品名</th><th>价格</th><th>数量</th></tr>';

        // 遍历模型数据
        foreach ($data as $pro){
            $table .= '<tr>';
            $table .= '<td>' . $pro['pro_id'] . '</td>';
            $table .= '<td>' . $pro['name'] . '</td>';
            $table .= '<td>' . $pro['price'] . '</td>';
            $table .= '<td>' . $pro['num'] . '</td>';
            $table .= '</tr>';
        }

        $table .= '</$table>';
        return $table;
    }
}


3、控制器3:依赖注入,解决了对象之间的高度耦合问题

<?php

//  控制器3:依赖注入,解决了对象之间的高度耦合问题

//  加载模型类、视图类
require 'Model.php';
require 'View.php';

//  控制器类
class Controller
{
    protected $model;
    protected $view;

    //  注入点是一个构造方法
    public function __construct(Model $model, View $view)
    {
        $this->model = $model;
        $this->view = $view;
    }

    public function index()
    {
        //  1、获取数据
        $data = $this->model->getData();

        //  2、渲染模板
        return $this ->view->fetch($data);
    }
}

//  客户端调用
$model = new Model();
$view = new View();

$controller = new Controller($model, $view);
echo $controller->index();


显示效果:

10000.jpg

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