2012-04-23 3 views
1
내가 Zend_Config_Writer 주변에 놀았 던

을 함께 서식하고, 내가 할 수 있지만 그것은 내가 때문에 방해 조금 포맷의 부족 찾을 원하는 것을 할 :의견을 추가 Zend_Config_Writer

[production : general] 
; 
; Production site configuration data. 
; 

locale           = sv_SE 
... 

어울린다을
[production : general] 
locale           = sv_SE 
... 

"새로운"구성은 Zend_Config 객체의 저장된 값을 기반으로 작성되었으며이 객체에는 주석이나 부드러운 행이 포함되어 있지 않음을 알고 있습니다. 그러나 이것은 새 구성을 내 공동 작업자에게 특히 읽기가 어렵게 만듭니다 - 노동자.

어떻게 든 해결 될 수 있습니까? 내가 가장 잘 생각해 낸 것은 "계단식 (cascading)"상속을 사용하는 다른 섹션을 사용하는 것입니다.하지만 어리석은 아이디어처럼 보입니다.

답변

0

.

  1. 구성을 여러 파일로 나눕니다. 내 경우 거의 모든 내 config를 보유하고있는 하나의 큰 application.ini와 특정 버전의 데이터를 보유하고있는 작은 version.ini를 가지고있다.
  2. Zend_Config_ini 개체를 separetly로 설정하고 allowModification을 하나만 설정한다.
  3. Zend_Config_Ini-> Merge() 기능을 사용하여 모든 구성을 병합 한 다음 읽기 전용으로 설정하십시오.
  4. 구성의 일부를 업데이트하려면 해당 특정 ini 파일에서 새 Zend_Config_ini 개체를 만들고 변경 및 건너 뛰기를 허용하도록 설정하십시오.
  5. Zend_Config_Writer_ini를 사용하여 구성을 업데이트하고 변경 사항을 작성하십시오.
012 3,516,

예제 코드 :

/* Load the config */  
//Get the application-config and set 'allowModifications' => true 
$config = new Zend_Config_Ini('../application/configs/application.ini',$state, array('allowModifications' => true)); 

//Get the second config-file 
$configVersion = new Zend_Config_Ini('../application/configs/version.ini'); 

//Merge both config-files and then set it to read-only 
$config->merge($configVersion); 
$config->setReadOnly(); 

/* Update a part of the config */ 
$configVersion = new Zend_Config_Ini(
     APPLICATION_PATH.'/configs/version.ini', 
     null, 
     array('skipExtends' => true, 'allowModifications' => true) 
    ); 

//Change some data here 
$configVersion->newData = "Some data"; 

//Write the updated ini 
$writer = new Zend_Config_Writer_Ini(
     array('config' => $configVersion, 'filename' => 'Path_To_Config_files/version.ini') 
    ); 
    try 
    { 
     $writer->write(); 
    } 
    catch (Exception $e) { 
     //Error handling 
    } 
0

Zend_Config_WriterZend_Config에 저장되어 있지 않으므로 아무런 설명도하지 않습니다. 목적. 렌더링하고자하는 ini 파일의 구조에 따라 최소한 중복을 제거하기 위해 "캐스 캐이 딩"을 사용할 수도 있습니다 (이는 나에게 어리석은 것처럼 보이지 않으며 표준 application.ini 구성 파일에서도 수행됩니다 ...) .

물론 다른 해결책은 ini 파일을 작성하기 위해 뭔가를 사용하거나 다른 방법으로 작성하는 것이지만 과도 할 수 있습니다. 도움이

희망, 나는 다음과 같은 방법으로 내 문제를 해결하고 성공적으로 테스트 한 실험을 몇 후

+0

네,이 표준에서 사용하고 난 내 자신의 응용 프로그램에서 사용하지만 일반 섹션이 필요가 섹션 내 의견을 교환하는 것입니다, 다음 젠드 설정 세션 상속 일반, 다음 PHP 구성 섹션, 다른 데이터베이스 및 사용자 응용 프로그램에 연결하는 등등에 대한 사용자 이름/암호가있는 여러 섹션. 나는 18 개의 다른 섹션으로 끝날 것이고, 그래서 그들 모두가 그들 위에 "상속 받아야"할 것이다. 지금은 두 개의 설정 파일을 사용하여 해결 했으므로 대부분의 내 의견을 기본 파일에 보관할 수 있습니다. – Lobo

관련 문제