/** * @depends testInstantiate * @param SquirtServiceConfigLoader $squirtServiceConfigLoader */ public function testListArrayReplacementLoadFile(SquirtServiceConfigLoader $squirtServiceConfigLoader) { /** * When extending parameters from one service to another * arrays with all integer keys (lists) are completely replaced * instead of recursively replacing individual values, as is done * with associative arrays */ $serviceConfig = $squirtServiceConfigLoader->loadConfig(array('services' => array('CONTAINER1' => array('class' => 'Squirt\\Common\\Container', 'params' => array('data' => array(1, 2, 3, 4, 5), 'deep' => array('color' => 'red'))), 'CONTAINER2' => array('extends' => 'CONTAINER1', 'params' => array('data' => array('a', 'b', 'c'), 'deep' => array('color' => 'blue')))))); $this->assertArrayHasKey('CONTAINER2', $serviceConfig); $container2Config = $serviceConfig['CONTAINER2']; $this->assertEquals(array('class' => 'Squirt\\Common\\Container', 'params' => array('data' => array('a', 'b', 'c'), 'deep' => array('color' => 'blue'))), $container2Config); }
protected function __construct(array $params) { $this->squirtServiceConfigLoader = SquirtUtil::validateParamClassWithDefault('squirtServiceConfigLoader', 'Squirt\\ServiceBuilder\\SquirtServiceConfigLoader', $params, function () use($params) { /* * Pass through parameters as these two classes are tightly * coupled and can use each other's configurations */ return SquirtServiceConfigLoader::factory($params); }); /* * Load any file based configuration */ if (array_key_exists('fileName', $params)) { $serviceConfig = $this->squirtServiceConfigLoader->loadFile($params['fileName']); $this->serviceConfig = ServiceBuilderUtil::mergeConfig($this->serviceConfig, $serviceConfig); } /* * Load any literal configuration passed */ if (array_key_exists('config', $params)) { $serviceConfig = $this->squirtServiceConfigLoader->loadConfig($params['config']); $this->serviceConfig = ServiceBuilderUtil::mergeConfig($this->serviceConfig, $serviceConfig); } }