首頁 >後端開發 >php教程 >php如何按需載入方式來增加程式的彈性度

php如何按需載入方式來增加程式的彈性度

藏色散人
藏色散人轉載
2020-02-02 18:44:462835瀏覽

php如何按需載入方式來增加程式的彈性度

設計模式的命名啊什麼的,我基本上已經忘記得差不多了,我就把我現在表述的這個東西叫做按需加載吧。

需求:

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) {}
}
// 其他配置文件读写类。。。

以上的程式碼我沒測試過,我表達的僅僅是一個思想,當然,基於這種思想還可以設計出更加靈活,可以增加一個數組配置來定義不同的文件分別採用哪個類來讀寫,時間關係,這個問題後續有時間再更新。

更多php相關知識,請造訪

php教學

以上是php如何按需載入方式來增加程式的彈性度的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除