Blogger Information
Blog 35
fans 0
comment 0
visits 22236
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php基础知识(单例模式和mvc设计)--2018年9月12日17:05:38
Hi的博客
Original
595 people have browsed it

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

运行实例 »

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


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments