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

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

WBOY
發布: 2016-07-29 09:08:17
原創
1087 人瀏覽過

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

需求:

1.我希望有一個配置文件讀寫類,不需要修改原本這個配置文件讀寫類就可以實現擴展;
2.這個擴展是比如我原本的配置是txt格式的,但現在我的設定類別是php或xml等,也可能是json
3.呼叫介面統一,不管什麼類型的設定文件,我呼叫同樣的一個檔案設定讀寫類別就可以了,防止後續的程式碼很難維護。

那麼:

1.首先,想到的是定義一個抽象類,不斷的繼承,透過繼承不用修改這個配置文件讀寫類;
2.但是,我就不能統一使用這個配置文件讀取類了,我調用的是我繼承後的這個類;

實現思想:

好了,廢話了那麼多,我這裡就來說一下我的實現思路,其實整個思路還是挺簡單的;

<code>/**
 * 定义配置文件读写类,所有的配置文件读写调用此类就可以了,统一接口
 */
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) {}
}
// 其他配置文件读写类。。。</code>
登入後複製

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

以上就介紹了php按需載入方式來增加程式的彈性度,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板