Zend 기반 Config 메커니즘 의 응용 분석

3862 단어 ZendConfig
Zend 의 Config 클래스 는 ZendConfig_Ini
코드$config=new ZendConfig_Ini("/var/www/html/usvn/config/config.ini", "general");
date_default_timezone_set($config->timezone);
USVN_ConsoleUtils::setLocale($config->system->locale);
===
Config.ini 파일 내용
[general]
url.base = "/usvn"
translation.locale = "zh_CN"
timezone = "Asia/Shanghai"
구체 적 으로 분석 하면 여 기 는 Zend 만 사 용 했 습 니 다.Config_Ini 의 구조 함수,우 리 는 그것 의 를 보 았 다.construct 중.
우선 프로필 이 있 는 지 판단 하 는 것 입 니 다.그 다음으로 option 을 관리 합 니 다.이 option 은 allow Modifications 속성(프로필 의 속성 을 수정 할 수 있 는 지 여부),nestSeparator 속성(프로필 의 key 구분자,기본 값 은 점)을 설정 할 수 있 습 니 다.
다음은$iniArray=$this-> 호출 되 었 습 니 다.loadIniFile($filename);이 함 수 는 매우 중요 합 니 다.바로 설정 파일 을 해석 한 것 입 니 다.따라 들 어가,먼저 호출 했 어parseIniFile,여러분 이 혼 란 스 럽 지 않도록 보 겠 습 니 다parseIniFile 이 되 돌려 준 데 이 터 는 어떤 모양 입 니까?

Array
(
    [general] => Array
        (
            [url.base] => /usvn
            [translation.locale] => zh_CN
            [timezone] => Asia/Shanghai
            [system.locale] => aa_DJ.utf8
        )

)
마지막 으로 분 석 된 것 은 2 차원 배열 입 니 다.
parseIniFile 은 실제로 시스템 함수 parse 를 호출 했 습 니 다.ini_파일 로 처 리 했 습 니 다.여기 특별히 주의 하 세 요.parse 를 호출 하고 있 습 니 다.ini_file 앞 뒤 는 사실 set 를 사 용 했 습 니 다.error_handler 와 restoreerror_handler,이상 처리 함 수 를 노출 합 니 다.설정 파일 을 분석 할 때 오류 가 발생 하기 쉽 고 이 오류 의 사용자 알림 은 매우 우호 적 이 어야 하기 때문에 사용자 가 수정 하 는 것 을 알려 주 는 것 이 좋 습 니 다.그래서 Zend 는 일부러 오류 처리 함 수 를 드 러 냅 니 다.우호 적 인 시스템 을 설계 하고 싶다 면 계승 류 에 다시 쓰 는 방법loadFileErrorHandler。
계속loadIniFile 내 려 다 보기
우리 의 ini 프로필 에서[]를 사용 하여 setion 을 표시 하기 때문에loadIniFile 이 되 돌아 오 는 2 차원 배열 이 되 돌아 오 는 key 는 genel 입 니 다.그러나 사실 우리 가 설정 파일 에서[geneal:123]을 section 으로 사용 하면 이 함 수 는 123 을[로 합 니 다.extends 의 val 복귀.실제로 이렇다

Array
(
    [general] => Array
        (
            [;extends] => 123
            [url.base] => /usvn
            [translation.locale] => zh_CN
        )

)
이제 다시construct,이때 iniArray 가 가 져 왔 습 니 다.2 차원 배열 입 니 다.다음은 섹 션 을 가 져 오 면 iniArray 를 처리 합 니 다array MergeRecursive,주로 key 의 system.locale=>aaDJ.utf 8 이 array(system=>array(locale=>aaDJ.utf8))。 여 기 는 options 의 nest Separator 속성 을 사 용 했 습 니 다.이 속성 은 기본적으로 점 입 니 다.바로 translation.locale 은 배열 로 구 분 됩 니 다.예 를 들 어 앞에서 들 어 온 nest Separator 를 사칭 으로 하면 설정 파일 은 translation:location=.............................................................
마지막 으로 분석 해 온 dataArray 는 이 모양

Array
(
    [url] => Array
        (
            [base] => /usvn
        )

    [translation] => Array
        (
            [locale] => zh_CN
        )

    [timezone] => Asia/Shanghai
    [system] => Array
        (
            [locale] => aa_DJ.utf8
        )
)
입 니 다.construct, Zend_Config_Ini 의 부 류 는 ZendConfig。
class Zend_Config implements Countable, Iterator
Zend_Config 는 Countable 인터페이스(count()방법 포함),Iterator 인터페이스(current,key,next,rewind,valid 등 포함)를 실현 합 니 다.
Zend_Config 의 구조 함 수 는 위 에서 분석 한 2 차원 배열 을 에 놓 습 니 다.데이터 에 당 첨 되 었 습 니 다.
여 기 는 두 개의 함 수 를 중시 합 니 다.
__set 와get
마술 방법get 은 config->field 를 사용 하여 설정 값 을 가 져 올 수 있 음 을 보증 합 니 다.
마술 방법set 설정 파일 을 수정 할 수 있 는 지 여 부 를 보증 합 니 다.set 에서 사용 합 니 다allow Modifications,이 속성 이 설정 되 어 있다 면setter 는 설정 할 수 있 습 니 다.그렇지 않 으 면 Zend 를 던 집 니 다.Config is read only 의 이상,allow Modifications 도 options 에서 설정 한 속성 중 하나 입 니 다.
이로써 글 의 맨 앞 에 있 는 데모 코드 를 봅 니 다.
date_default_timezone_set($config->timezone);
여기 서 사용 할 수 있 는 이 유 는->timezone 은get 은 config 의 속성 이 아 닙 니 다.Zend 의 Config 메커니즘 분석 이 끝 났 습 니 다.

좋은 웹페이지 즐겨찾기