博客列表 >php基础知识(单例模式和mvc设计)--2018年9月12日17:05:38

php基础知识(单例模式和mvc设计)--2018年9月12日17:05:38

Hi的博客
Hi的博客原创
2018年09月12日 17:10:42594浏览

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();//执行控制器的首页方法
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


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