기본적으로 디자인 패턴의 네이밍을 잊어버렸기 때문에 지금 설명하는 내용을 온디맨드 로딩이라고 부르겠습니다.
요구 사항:
1. 원래 구성 파일 읽기 및 쓰기 클래스를 수정하지 않고 확장할 수 있는 구성 파일 읽기 및 쓰기 클래스가 있으면 좋겠습니다.
2. 내 원래 구성은 txt 형식이었지만 이제 내 구성 클래스는 php 또는 xml 등이거나 json
3일 수 있습니다. 호출 인터페이스는 어떤 유형의 구성 파일이든 상관없이 통합됩니다. 동일한 파일을 사용하여 읽기를 구성하면 후속 코드를 유지 관리하기 어려워지지 않도록 클래스를 작성하기만 하면 됩니다.
그러면
1. 우선 추상 클래스를 정의하고 이를 계속 상속하면 구성 파일을 읽고 쓸 필요가 없습니다.
2. 그런데 이 구성 파일 읽기 클래스는 일률적으로 사용할 수 없습니다.
구현 아이디어:
아, 말도 안 돼요. , 여기에 대해 이야기하겠습니다. 사실 전체 아이디어는 매우 간단합니다.
<code>/** * 定义配置文件读写类,所有的配置文件读写调用此类就可以了,统一接口 */ 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) {} } // 其他配置文件读写类。。。</code>
제가 표현한 것은 단지 물론 이 아이디어를 바탕으로 더 많은 디자인을 설계할 수 있으며, 배열 구성을 추가하여 다양한 파일을 읽고 쓰는 데 사용할 수 있으며, 이 문제는 나중에 업데이트될 예정입니다. 시간이다.
위 내용은 내용적인 측면을 포함하여 프로그램의 유연성을 높이기 위해 PHP 주문형 로딩 방법을 소개한 내용이 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.