config = $config; $this->prefix = $prefix; } protected function findDefinition($name) { if (strpos($name, $this->prefix) !== 0) { return null; } list($sectionName, $configKey) = $this->parseEntryName($name); $section = $this->getSection($sectionName); if ($configKey === null) { return new ValueDefinition($name, $section); } if (! array_key_exists($configKey, $section)) { return null; } return new ValueDefinition($name, $section[$configKey]); } private function parseEntryName($name) { $parts = explode('.', $name, 3); array_shift($parts); if (! isset($parts[1])) { $parts[1] = null; } return $parts; } private function getSection($sectionName) { $section = $this->config->$sectionName; if (!is_array($section)) { throw new DefinitionException(sprintf( 'Piwik\Config did not return an array for the config section %s', $section )); } return $section; } }