merge() public method

public merge ( array $definition )
$definition array
Example #1
0
 /**
  * Get class name mapped to collection
  *
  * @param string        $name               name of collection
  * @param array         $defaultDefinition  definition used when no definition found for defined class
  * @throws Exception
  * @return string|array                     name of class or array of class definition
  */
 private function getCollectionDefinition($name, array $defaultDefinition = null)
 {
     if (isset($this->mapping[$name])) {
         $classDefinition = $this->mapping[$name];
     } elseif ($this->regexpMapping) {
         foreach ($this->regexpMapping as $collectionNamePattern => $regexpMappingClassDefinition) {
             if (preg_match($collectionNamePattern, $name, $matches)) {
                 $classDefinition = clone $regexpMappingClassDefinition;
                 $classDefinition->setOption('regexp', $matches);
                 break;
             }
         }
     }
     // mapping not configured - use default
     if (!isset($classDefinition)) {
         if (!empty($this->mapping['*'])) {
             $classDefinition = clone $this->mapping['*'];
             $collectionClass = $classDefinition->getClass() . '\\' . implode('\\', array_map('ucfirst', explode('.', $name)));
             $classDefinition->setClass($collectionClass);
         } else {
             $classDefinition = new Definition();
             if ($defaultDefinition) {
                 $classDefinition->merge($defaultDefinition);
             }
         }
     }
     // check if class exists
     if (!class_exists($classDefinition->getClass())) {
         throw new Exception('Class ' . $classDefinition->getClass() . ' not found while map collection name to class');
     }
     return $classDefinition;
 }