私は基本的にデザイン パターンの名前を忘れてしまったので、今説明していることをオンデマンド ロードと呼ぶことにします。
要件:
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 中国語 Web サイトの他の関連記事を参照してください。