Example #1
0
 /**
  * Merge any included definitions.
  *
  * @param Definition
  */
 private function processDefinitionIncludes(Definition $definition)
 {
     if (!isset($definition['includes']) || empty($definition['includes'])) {
         return;
     }
     $baseDefinition = array();
     $validKeys = array('rows', 'sort', 'classes', 'params', 'includes');
     foreach ($definition['includes'] as $include) {
         $keys = array();
         if (count($include) == 2) {
             list($file, $keys) = $include;
         } elseif (count($include) == 1) {
             list($file) = $include;
         } else {
             throw new \InvalidArgumentException(sprintf('Invalid number of arguments given for "include" configuration key, got: "%s"', print_r($include, true)));
         }
         if (empty($keys)) {
             $keys = $validKeys;
         }
         $filePath = PathUtil::getPath($file, $definition->getBasePath());
         $includeDefinition = $this->loadDefinition($filePath);
         $baseDefinition = $this->mergeDefinition($baseDefinition, $includeDefinition, $keys);
     }
     $definition->exchangeArray($this->mergeDefinition($baseDefinition, $definition->getArrayCopy(), $validKeys));
 }