Example #1
0
 /**
  * Creates a new object of the given type, using the optional parameters.
  * When pseudo-namespace support is enabled class names can become very long,
  * and this function provides an alternative way to create objects that is
  * more readable.
  * @param string $type the type of object to create
  * @param array $params parameters to pass into the constructor, as either
  *     flat array in the correct order for the constructor or as an
  *     associative array from parameter name to value
  * @return mixed a new instance of a class that represents that type
  */
 public function Create($type, $params = null)
 {
     if (array_key_exists($type, $this->options['classmap'])) {
         $class = $this->options['classmap'][$type];
         $reflectionClass = new ReflectionClass($class);
         if (isset($params)) {
             if (MapUtils::IsMap($params)) {
                 $params = MapUtils::MapToMethodParameters($params, $reflectionClass->getConstructor());
             }
             return $reflectionClass->newInstanceArgs($params);
         } else {
             return $reflectionClass->newInstance();
         }
     } else {
         trigger_error('Unknown type: ' . $type, E_USER_ERROR);
     }
 }