/** * @covers PsUtil::mergeIniFiles */ public function testMergeIniFiles() { $this->assertEquals(array_merge(array(1, 2, 3), array(2, 3, 4)), array(1, 2, 3, 2, 3, 4)); $this->assertEquals(array_merge(array('a' => 1, 'b' => 2), array('b' => 3, 'c' => 4)), array('a' => 1, 'b' => 3, 'c' => 4)); $this->assertEquals(array_merge(array('a' => 1, 'd' => 1, 2, 'b' => 2, 4), array('b' => 3, 'c' => 4)), array('a' => 1, 'd' => 1, 2, 'b' => 3, 4, 'c' => 4)); for ($i = 1; $i <= 3; ++$i) { $this->assertEquals(IniFilesTestHelper::di($i)->parseAsIni(true), IniFilesTestHelper::arr($i, true)); $this->assertEquals(IniFilesTestHelper::di($i)->parseAsIni(false), IniFilesTestHelper::arr($i, false)); } //1+2 $this->assertEquals(PsUtil::mergeIniFiles(IniFilesTestHelper::di(1)->parseAsIni(), IniFilesTestHelper::di(2)->parseAsIni()), array('section1' => array('p1' => 'v1-2', 'p2' => 'v2-2'), 'section2' => array('p2' => 'v2-2', 'p3' => 'v3-2'), 'section3' => array('k' => '2', 'arr' => array('1-1', '2-1', '3-1', '1-2', '2-2', '3-2')), 'section4' => array('arr' => array('a' => 'a-2', 'b' => 'b-2', 'c' => 'c-2')))); //3+2+1 $this->assertEquals(PsUtil::mergeIniFiles(IniFilesTestHelper::di(3)->parseAsIni(), IniFilesTestHelper::di(2)->parseAsIni(), IniFilesTestHelper::di(1)->parseAsIni()), array('section1' => array('p1' => 'v1-1', 'p2' => 'v2-1'), 'section2' => array('p2' => 'v2-1', 'p3' => 'v3-1'), 'section3' => array('k' => '1', 'arr' => array('1-3', '2-3', '3-3', '1-2', '2-2', '3-2', '1-1', '2-1', '3-1')), 'section4' => array('arr' => array('a' => 'a-1', 'b' => 'b-1', 'c' => 'c-1')))); //1+2+3 $this->assertEquals(PsUtil::mergeIniFiles(IniFilesTestHelper::di(1)->parseAsIni(), IniFilesTestHelper::di(2)->parseAsIni(), IniFilesTestHelper::di(3)->parseAsIni()), array('section1' => array('p1' => 'v1-3', 'p2' => 'v2-3'), 'section2' => array('p2' => 'v2-3', 'p3' => 'v3-3'), 'section3' => array('k' => '3', 'arr' => array('1-1', '2-1', '3-1', '1-2', '2-2', '3-2', '1-3', '2-3', '3-3')), 'section4' => array('arr' => array('a' => 'a-3', 'b' => 'b-3', 'c' => 'c-3')))); //1+3+2 $this->assertEquals(PsUtil::mergeIniFiles(IniFilesTestHelper::di(1)->parseAsIni(), IniFilesTestHelper::di(3)->parseAsIni(), IniFilesTestHelper::di(2)->parseAsIni()), array('section1' => array('p1' => 'v1-2', 'p2' => 'v2-2'), 'section2' => array('p2' => 'v2-2', 'p3' => 'v3-2'), 'section3' => array('k' => '2', 'arr' => array('1-1', '2-1', '3-1', '1-3', '2-3', '3-3', '1-2', '2-2', '3-2')), 'section4' => array('arr' => array('a' => 'a-2', 'b' => 'b-2', 'c' => 'c-2')))); //5+6 $this->assertEquals(PsUtil::mergeIniFiles(IniFilesTestHelper::di(5)->parseAsIni(), IniFilesTestHelper::di(6)->parseAsIni()), array('keys' => array('k1' => '1', 'k2' => '2', 'k3' => '2', 'k4' => '2'), 'array-idx' => array('arr' => array('1', '2', '3', '3', '4', '5')), 'array-asc' => array('arr' => array('a' => '1', 'b' => '3', 'c' => '4', 'd' => '5')))); //5+6+7 $this->assertEquals(PsUtil::mergeIniFiles(IniFilesTestHelper::di(5)->parseAsIni(), IniFilesTestHelper::di(6)->parseAsIni(), IniFilesTestHelper::di(7)->parseAsIni()), array('keys' => array('k1' => '1', 'k2' => '2', 'k3' => '3', 'k4' => '3', 'k5' => '3'), 'array-idx' => array('arr' => array('1', '2', '3', '3', '4', '5', '5', '6', '7')), 'array-asc' => array('arr' => array('a' => '1', 'b' => '3', 'c' => '5', 'd' => '6', 'e' => '7')))); //1+2+3+5+6+7 $this->assertEquals(PsUtil::mergeIniFiles(IniFilesTestHelper::di(1)->parseAsIni(), IniFilesTestHelper::di(2)->parseAsIni(), IniFilesTestHelper::di(3)->parseAsIni(), IniFilesTestHelper::di(5)->parseAsIni(), IniFilesTestHelper::di(6)->parseAsIni(), IniFilesTestHelper::di(7)->parseAsIni()), array('section1' => array('p1' => 'v1-3', 'p2' => 'v2-3'), 'section2' => array('p2' => 'v2-3', 'p3' => 'v3-3'), 'section3' => array('k' => '3', 'arr' => array('1-1', '2-1', '3-1', '1-2', '2-2', '3-2', '1-3', '2-3', '3-3')), 'section4' => array('arr' => array('a' => 'a-3', 'b' => 'b-3', 'c' => 'c-3')), 'keys' => array('k1' => '1', 'k2' => '2', 'k3' => '3', 'k4' => '3', 'k5' => '3'), 'array-idx' => array('arr' => array('1', '2', '3', '3', '4', '5', '5', '6', '7')), 'array-asc' => array('arr' => array('a' => '1', 'b' => '3', 'c' => '5', 'd' => '6', 'e' => '7')))); }
/** * Метод загружает все группы настроек */ public static function getIni($scope = ENTITY_SCOPE_ALL) { $config = self::getConfigName(); if (!array_key_exists($config, self::$INI)) { $LOGGER = PsLogger::inst(__CLASS__); $sdkDi = self::getIniDi(ENTITY_SCOPE_SDK); $projDi = self::getIniDi(ENTITY_SCOPE_PROJ); self::$INI[$config] = array(); self::$INI[$config][ENTITY_SCOPE_SDK] = $sdkDi->parseAsIni(true); self::$INI[$config][ENTITY_SCOPE_PROJ] = to_array($projDi->parseAsIni(true, false)); self::$INI[$config][ENTITY_SCOPE_ALL] = PsUtil::mergeIniFiles(self::$INI[$config][ENTITY_SCOPE_SDK], self::$INI[$config][ENTITY_SCOPE_PROJ]); if ($LOGGER->isEnabled()) { foreach (self::$INI[$config] as $iniScope => $iniProps) { $LOGGER->info('{} [{}]:', $config, $iniScope); $LOGGER->info(print_r($iniProps, true)); $LOGGER->info(); } } } check_condition(array_key_exists($scope, self::$INI[$config]), "Unknown entity scope: {$scope}"); return self::$INI[$config][$scope]; }
/** * Метод загружает все группы настроек */ public static function getIni($scope = ENTITY_SCOPE_ALL) { $config = self::getConfigName(); if (!array_key_exists($config, self::$INI)) { $sdkDi = self::getIniDi(ENTITY_SCOPE_SDK); $projDi = self::getIniDi(ENTITY_SCOPE_PROJ); self::$INI[$config] = array(); self::$INI[$config][ENTITY_SCOPE_SDK] = $sdkDi->parseAsIni(true); self::$INI[$config][ENTITY_SCOPE_PROJ] = to_array($projDi->parseAsIni(true, false)); self::$INI[$config][ENTITY_SCOPE_ALL] = PsUtil::mergeIniFiles(self::$INI[$config][ENTITY_SCOPE_SDK], self::$INI[$config][ENTITY_SCOPE_PROJ]); //Экземпляр логгера должен быть создан именно здесь - после того, как был наполнен массив параметров //TODO - нельзя здесь использовать логгер. Можно вывести в FileLogWriter. /* $LOGGER = PsLogger::inst(__CLASS__); if ($LOGGER->isEnabled()) { foreach (self::$INI[$config] as $iniScope => $iniProps) { $LOGGER->info('{} [{}]:', $config, $iniScope); $LOGGER->info(print_r($iniProps, true)); $LOGGER->info(); } } */ } check_condition(array_key_exists($scope, self::$INI[$config]), "Unknown entity scope: {$scope}"); return self::$INI[$config][$scope]; }