php按需加载方式来增加程序的灵活度
生活随笔
收集整理的這篇文章主要介紹了
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按需加载方式来增加程序的灵活度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转载:第一次负责项目的总结
- 下一篇: Active Record 数据库迁移总