资讯专栏INFORMATION COLUMN

php按需加载方式来增加程序的灵活度

smartlion / 2893人阅读

摘要:设计模式的命名啊什么的,我基本上已经忘记得差不多了,我就把我现在表述的这个东西叫做按需加载吧。

设计模式的命名啊什么的,我基本上已经忘记得差不多了,我就把我现在表述的这个东西叫做按需加载吧。

需求:

1.我希望有一个配置文件读写类,不需要修改原本这个配置文件读写类就可以实现扩展;
2.这个扩展是比如我原本的配置是txt格式的,但现在我的配置类是php或者是xml等,也可能是json
3.调用接口统一,不管什么类型的配置文件,我调用同样的 一个文件配置读写类就可以了,防止后续的代码很难维护。

那么:

1.首先,想到的是定义一个抽象类,不断的继承,通过继承不用修改这个配置文件读写类;
2.但是,我就不能统一使用这个配置文件读取类了,我调用的是我继承后的这个类;

实现思想:

好了,废话了那么多,我这里就来说一下我的实现思路,其实整个思路还是挺简单的;

/**
 * 定义配置文件读写类,所有的配置文件读写调用此类就可以了,统一接口
 */
class Config {
    // 读
    public function read($file,$type = "txt") {
        $instance = $this->getInstance($type);
        $instance->read($file);
    }
    // 写
    public function write($file,$type = "txt") {
        $instance = $this->getInstance($type);
        $instance->read($file);
    }
    // 删
    public function delete($file,$type = "txt") {
        $instance = $this->getInstance($type);
        $instance->read($file);
    }
    // 获取实际操作对象实例
    public function getInstance($type = "txt") {
        $class_name = ucfirst($type)."Config"; // 根据文件格式实例化具体的操作类
        if(class_exists($class_name)) {
            $instance = new $class_name;
        } else {
            throw new Exception("未定义".$class_name);
        }
        if(is_subclass_of($instance,"BaseConfig") !== 1) {
            throw new Exception("配置文件读写类必须继承BaseConfig");
        }
        return $instance;
    }
}
// 定义一个基础操作接口类,后续的文件读写必须继承这个规范
abstract class BaseConfig {
    abstract protected function read($file) {}
    abstract protected function write($file) {}
    abstract protected function delete($file) {}
}
// Text配置文件读写类
TxtConfig extends BaseConfig {
    public function read($file) {}
    public function write($file) {}
    public function delete($file) {}
}
// 其他配置文件读写类。。。

以上的代码我没测试过,我表达的仅仅是一个思想,当然,基于这种思想还可以设计出更加灵活,可以增加一个数组配置来定义不同的文件分别采用哪个类来读写,时间关系,这个问题后续有时间再更新。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21313.html

相关文章

  • 云正成为金融服务业主流技术

    摘要:特别是在去年,已经开始出现对云计算在金融服务行业的适用性的明确看法。随着这种伙伴关系的增加,私有云服务将会成为金融服务行业的主导力量。云计算在金融行业的部署了将迅速增加,这些技术已经达到其临界点。       在短短几年内,云计算已经从神秘的技术管理模式转变成改变业务领导评估支持业务增长的底层技术的主导力量。特别是在金融市场,服务供应商既没有明确定义云计算对金融业务的影响,一般消费者也没有清...

    Richard_Gao 评论0 收藏0
  • React单页如何规划路由、设计Store、划分模块、按需加载

    摘要:所以,我们使用来序列化第二级参数,比如张家界这样做也有个不好的地方,就是需要,然后特殊字符会变得比较丑。模块规划模块与无关划分模块可以很好的拆解功能,化繁为简,并且对内隐藏细节,对外暴露少量接口。 本项目地址:react-coat-helloworld react-coat 同时支持浏览器渲染(SPA)和服务器渲染(SSR),本 Demo 仅演示浏览器渲染,请先了解一下:react...

    13651657101 评论0 收藏0
  • 云计算在各个领域应用

    摘要:云存储技术在安防监控行业的发展上有着巨大的应用前景。智能交通依靠云计算仍有困扰云计算起源于领域,在智能交通化日趋明显的今天,智能交通领域的云计算应用也为业内外所普遍期待。云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。监控数据的云存储方式安防监控技术发展经历了模拟化、数字化、网络化三个阶段。网络监控的诞生解决了传统监控远程传输效果的...

    blair 评论0 收藏0
  • 【前端构建】WebPack实例与前端性能优化

    摘要:感受构建工具给前端优化工作带来的便利。多多益处逻辑清晰,程序注重数据与表现分离,可读性强,利于规避和排查问题构建工具层出不穷。其实工具都能满足需求,关键是看怎么用,工具的使用背后是对前端性能优化的理解程度。 这篇主要介绍一下我在玩Webpack过程中的心得。通过实例介绍WebPack的安装,插件使用及加载策略。感受构建工具给前端优化工作带来的便利。 showImg(https://se...

    QiShare 评论0 收藏0
  • CodeIgniter 4 建议路线图

    摘要:核心变化从第一版发布以来,社区发生了巨大变化。这意味着系统必须全部重写。暂时不会为一个即将停止支持的版本发布新版本。路由路由功能将被更新。改进的日志系统日志系统将被改进,但具体细节尚未确定。第一阶段第一阶段将侧重于抓住框架最重要的部分。 我们综合考虑了社区的愿望和意见后,也对什么样的未来对 CI 是最合适的做了一些思考,然后,CI 理事会对框架的未来做出了一些决策。预告一下,未来将会有...

    sean 评论0 收藏0

发表评论

0条评论

smartlion

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<