手记

【九月打卡】第13天--大话PHP设计模式第十四章节综合实战

课程名称:大话PHP设计模式

课程章节: 14-2MVC结构 14-3自动加载配置
课程链接

主讲老师:Rango

课程内容

讲解了MVC结构和自动加载配置的现实过程

课程收获

一、MVC结构

定义

模型-视图-控制器模式,也称为MVC模式(Model View Controller)。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
它把软件系统分为三个基本部分:
模型(Model):负责存储系统的中心数据。
视图(View):将信息显示给用户(可以定义多个视图)。
控制器(Controller):处理用户输入的信息。负责从视图读取数据,控制用户输入,并向模型发送数据,是应用程序中处理用户交互的部分。负责管理与用户交互交互控制。

目的

实现一种动态的程序设计,是后序对程序的修改和扩展简化,并且使程序某一部分的重复利用称为可能。
通过对复杂度的简化,使程序结构更加直观。

二、自动加载配置

实现原理

1、PHP中使用ArrayAccess实现配置文件的加载
2、在工厂方法中读取配置,生成可配置化的对象
3、使用装饰器模式是实现权限验证,模板渲染,JSON串化
4、使用观察者模式实现数据更新事件的一系列更新操作
5、使用代理模式实现数据库的主从自动切换

代码实现

class Config implements ArrayAccess
{
    protected $path;
    protected $configs = [];
    function __construct($path)
    {
        $this->path = $path;
    }

    function offsetGet(mixed $offset): mixed
    {
        if (empty($this->configs[$offset]))
        {
            $file_path = $this->path.'/'.$offset.'.php';
            $config = require $file_path;
            $this->configs[$offset] = $config;
        }

        return $this->configs[$offset];
    }

    function offsetSet(mixed $offset, mixed $value): void
    {
        throw new Exception("cannpr write config file.");
        
    }

    function offsetExists(mixed $offset): bool
    {
        return isset($this->configs[$offset]);
    }

    function offsetUnset(mixed $offset): void
    {
        unset($this->configs[$offset]);
    }

}

$config = new Config(__DIR__.'/configs');
var_dump($config['controller']);

\configs\controller.php

$config = [
    'home' => [
        'decorator' => ['Demo\decorator\Template']
    ]
];

return $config;

课程截图


0人推荐
随时随地看视频
慕课网APP