>  기사  >  백엔드 개발  >  프로그램의 유연성을 높이기 위해 필요에 따라 PHP를 로드하는 방법

프로그램의 유연성을 높이기 위해 필요에 따라 PHP를 로드하는 방법

藏色散人
藏色散人앞으로
2020-02-02 18:44:462751검색

프로그램의 유연성을 높이기 위해 필요에 따라 PHP를 로드하는 방법

기본적으로 디자인 패턴의 이름을 잊어버렸기 때문에 지금 설명하는 내용을 온디맨드 로딩이라고 부르겠습니다.

Requirements:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제