Blogger Information
Blog 34
fans 0
comment 0
visits 32117
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
单例模式+MVC的实现原理+MVC的设计思想
Belifforz的博客
Original
731 people have browsed it
  1. 单例模式

实例

<?php
/**
 * 单例模式:一个类仅允许被实例化一次
 * 1.一个站点仅需要创建一个数据库连接
 * 2.一个站点只需要一个配置类
 */

//创建一个使用的配置类
class config
{
    /**
     *为什么要用静态?因为静态属性属于类的,可以被所有类实例所共享
     * 为什么要能实例初始化为null,便于检测是否已经实例化
     */

    private static $instance = null;
    public $setting = [];

    //禁止从类的外部实例化外部
    private function __construct()
    {

    }
    //防止克隆
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }

    public static function getInstance()
    {
        if(self::$instance ==null)
        {
            self::$instance = new self();
        }
        //如果存在,直接返回
        return self::$instance;
    }

    //配置项的设置操作
    public function set()
    {
        //获取参数数量
        if(func_num_args()>0)
        {
            if((func_num_args() ==1) && is_array(func_get_args())){
                //数组
                $value =func_get_arg(0);
                $this->setting=array_merge($this->setting=$value);
            }elseif(func_num_args() ==2){
                $name = func_get_arg(0);
                $value = func_get_arg(1);
                $this->setting[$name] = $value;
            }else{
                echo '非法参数';
            }
        }else{
            echo '没有参数传入';
        }
    }

    //获取参数:当无参数时,默认获取全部
    public function get($name='')
    {
        if(empty($name)){
            return $this->setting;
        }
        return $this->setting[$name];
    }
}

$obj = config::getInstance();
//var_dump($obj);
$obj->set('host','127.0.0.1');
echo $obj->get('host'),"<hr>";
$obj->set(['host'=>'127.0.0.1','user'=>'root','password'=>'root']);
print_r($obj->get());

运行实例 »

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

2.MVC的实现原理

实例

<?php
/**
 * 模型层
 */

namespace mvc\model;


class Model
{
    public $pdo = null;
    //连接数据库
    public $result =[];
    public function __construct($db,$user,$password)
    {
        $this->pdo = new \PDO('mysql:host=127.0.0.1;dbname='.$db,$user,$password);
    }

    //查询
    public function select($table,$num){

        //创建预处理对象
        $stmt = $this->pdo->prepare("SELECT * 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 dispaly($data)
    {
        $table = '<!doctype html>
<html lang="zh-Hans">
<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">
    <title>MVC简介</title>
    <style>
        table,th,td{
            border:1px solid black;
        }
        table {
            border-collapse:collapse;
            width:60%;
            margin:30px auto;
            text-align:center;
        }
        table tr:first-child{
            background: lime;
        }
        table caption{
            font-size:1.5em;
            margin-bottom:15px;

        }
    </style>
</head>
<body>
    <table >
        <caption>员工信息表</caption>
        <tr>
            <td>ID</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>工资</td>
        </tr>';
        foreach ($data as $value) {
            $table .= '<tr>';
            $table .= '<td>' . $value['id'] . ' </td>';
            $table .= '<td>' . $value['name'] . ' </td>';
            $table .= '<td>' . $value['age'] . ' </td>';
            $table .= '<td>' . $value['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',12);
        $result = $model->result;
        require './view/View.php';
        $view = new View($result);
        $data = $view->getData();
        $view->dispaly($data);
    }
}

运行实例 »

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

实例

<?php
/**
 * 入口文件
 */


require './controller/Controller.php';

use mvc\controller\Controller;
$controller = new Controller;
$controller->index();

运行实例 »

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


3.MVC的设计思想是什么?

mvc主要应该是把视图,模型分开进行处理,这有助于团队协作,

也为了代码复用.   控制器统一分发请求与动作.交给模型进行逻辑处理,最后传到视图进行显示出来

Correction status:qualified

Teacher's comments:
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