J'ai fondamentalement oublié la dénomination des modèles de conception, j'appellerai donc ce que je décris maintenant le chargement à la demande.
Exigences :
1. J'espère avoir une classe de lecture et d'écriture du fichier de configuration, qui peut être étendue sans modifier la classe de lecture et d'écriture du fichier de configuration d'origine
2. Cette extension est par exemple, ma configuration d'origine est au format txt, mais maintenant ma classe de configuration est php ou xml, etc., ou elle peut être json3. est unifié, quel que soit le type de fichier de configuration, j'appelle simplement le même fichier pour configurer la classe en lecture-écriture afin d'éviter que le code ultérieur ne soit difficile à maintenir.Ensuite :
1. Tout d'abord, ce qui me vient à l'esprit est de définir une classe abstraite et de continuer à en hériter par héritage, il n'est pas nécessaire de le faire. modifier la classe de lecture et d'écriture du fichier de configuration ;2. Cependant, je ne peux pas utiliser ce fichier de configuration pour lire la classe de manière uniforme
Implémentation. idée :
D'accord, assez de bêtises, laissez-moi parler de mon idée d'implémentation ici. En fait, l'idée est assez simple/** * 定义配置文件读写类,所有的配置文件读写调用此类就可以了,统一接口 */ 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) {} } // 其他配置文件读写类。。。
tutoriel php !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!