Maison > développement back-end > tutoriel php > Comment charger PHP à la demande pour augmenter la flexibilité du programme

Comment charger PHP à la demande pour augmenter la flexibilité du programme

藏色散人
Libérer: 2023-04-08 12:12:02
avant
2821 Les gens l'ont consulté

Comment charger PHP à la demande pour augmenter la flexibilité du programme

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 json

3. 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) {}
}
// 其他配置文件读写类。。。
Copier après la connexion

Je n'ai pas testé le code ci-dessus, ce que j'exprime n'est qu'un Bien sûr, sur la base de cette idée, une conception plus flexible peut être ajoutée. Une configuration de tableau peut être ajoutée pour définir la classe à utiliser pour les différents fichiers à lire et à écrire, ainsi que la relation temporelle. être mis à jour plus tard quand il y aura du temps.

Pour plus de connaissances sur php, veuillez visiter le

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!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal