기본적으로 디자인 패턴의 이름을 잊어버렸기 때문에 지금 설명하는 내용을 온디맨드 로딩이라고 부르겠습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!