为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【九月打卡】第13天--大话PHP设计模式第十四章节综合实战

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

2022.09.19 20:50 408浏览

课程名称:大话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;

课程截图

图片描述
图片描述

点击查看更多内容
PHP
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
1
获赞与收藏
0

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

146篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消