Heim  >  Artikel  >  Backend-Entwicklung  >  So laden Sie PHP bei Bedarf, um die Flexibilität des Programms zu erhöhen

So laden Sie PHP bei Bedarf, um die Flexibilität des Programms zu erhöhen

藏色散人
藏色散人nach vorne
2020-02-02 18:44:462751Durchsuche

So laden Sie PHP bei Bedarf, um die Flexibilität des Programms zu erhöhen

Ich habe die Benennung von Entwurfsmustern im Grunde vergessen, daher nenne ich das, was ich jetzt beschreibe, On-Demand-Laden.

Anforderungen:

1 Ich hoffe, eine Lese- und Schreibklasse für Konfigurationsdateien zu haben, die erweitert werden kann, ohne die ursprüngliche Lese- und Schreibklasse für Konfigurationsdateien zu ändern 🎜>

2. Diese Erweiterung ist zum Beispiel meine ursprüngliche Konfiguration im TXT-Format, aber jetzt ist meine Konfigurationsklasse PHP oder XML usw., oder es kann JSON sein

3 Die aufrufende Schnittstelle Unabhängig vom Typ der Konfigurationsdatei rufe ich einfach dieselbe Datei auf, um die Lese-/Schreibklasse zu konfigurieren und zu verhindern, dass nachfolgender Code schwer zu warten ist.

Dann:

1. Zunächst fällt mir ein, eine abstrakte Klasse zu definieren und sie weiterhin durch Vererbung zu erben Ändern Sie die Lese- und Schreibklasse der Konfigurationsdatei. Ich kann diese Konfigurationsdatei jedoch nicht einheitlich verwenden Idee:

Okay, genug Unsinn, lass mich hier über meine Implementierungsidee sprechen. Tatsächlich ist die ganze Idee ziemlich einfach

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

Ich habe den obigen Code nicht getestet. Was ich zum Ausdruck bringe, ist natürlich ein flexibleres Design, das hinzugefügt werden kann, um zu definieren, welche Klasse für verschiedene Dateien zum Lesen und Schreiben verwendet werden soll werden später aktualisiert, wenn Zeit ist. Weitere PHP-Kenntnisse finden Sie im

PHP-Tutorial

!

Das obige ist der detaillierte Inhalt vonSo laden Sie PHP bei Bedarf, um die Flexibilität des Programms zu erhöhen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen