コード例 #1
0
 public function testStaticConfigMerge()
 {
     // main config
     $mainContent = array('foo' => 'bar', 'blubb' => array('firstname' => 'Hermann'), 'tags' => array('tag1', 'tag2', 'tag3'));
     $main = new Zend_Config($mainContent, true);
     // config to merge
     $mergeContent = array('blubb' => array('lastname' => 'Kunz'), 'tags' => array('newtag1', 'newtag2'));
     $merge = new Zend_Config($mergeContent, true);
     // do it
     $merged = Kwf_Config_Web::mergeConfigs($main, $merge);
     $mergedArray = $merged->toArray();
     $expectedResult = $mainContent;
     $expectedResult['blubb']['lastname'] = 'Kunz';
     $expectedResult['tags'] = array('newtag1', 'newtag2');
     $this->assertEquals($expectedResult, $mergedArray);
     // config to merge
     $mergeContent = array('blubb' => array('firstname' => 'Kurt'));
     $merge = new Zend_Config($mergeContent, true);
     // do it
     $merged = Kwf_Config_Web::mergeConfigs($merged, $merge);
     $mergedArray = $merged->toArray();
     $expectedResult['blubb']['firstname'] = 'Kurt';
     $this->assertEquals($expectedResult, $mergedArray);
 }
コード例 #2
0
ファイル: Web.php プロジェクト: xiaoguizhidao/koala-framework
 /**
  * Diesen Merge sollte eigentlich das Zend machen, aber das merged nicht so
  * wie wir das erwarten. Beispiel:
  *
  * Main Config:
  * bla.blubb[] = x
  * bla.blubb[] = y
  * bla.blubb[] = z
  *
  * Merge Config:
  * bla.blubb[] = a
  * bla.blubb[] = b
  *
  * Nach den Config-Section regeln würde man erwarten, dass nach dem mergen nur mehr
  * a und b drin steht. Tatsächlich merget Zend aber so, dass a, b, z überbleibt.
  * Zend überschreibt die Werte, was wir nicht wollen, deshalb dieses
  * händische mergen hier.
  */
 public static function mergeConfigs(Zend_Config $main, Zend_Config $merge)
 {
     // check if all keys are of type 'integer' and if so, only use merge config
     $everyKeyIsInteger = true;
     foreach ($merge as $key => $item) {
         if (!is_int($key)) {
             $everyKeyIsInteger = false;
             break;
         }
     }
     if ($everyKeyIsInteger) {
         return $merge;
     }
     foreach ($merge as $key => $item) {
         if (isset($main->{$key})) {
             if ($item instanceof Zend_Config && $main->{$key} instanceof Zend_Config) {
                 $main->{$key} = Kwf_Config_Web::mergeConfigs($main->{$key}, new Zend_Config($item->toArray(), !$main->readOnly()));
             } else {
                 $main->{$key} = $item;
             }
         } else {
             if ($item instanceof Zend_Config) {
                 $main->{$key} = new Zend_Config($item->toArray(), !$main->readOnly());
             } else {
                 $main->{$key} = $item;
             }
         }
     }
     return $main;
 }