/** * Create object by mixed configuration data * * @param mixed $config Configuration data * @param array $args Constructor arguments * @param string|null $base Base class * * @throws \InvalidArgumentException * * @return mixed */ public static function objectify($config = null, $args = array(), $base = null) { if (is_string($config)) { $config = new self(array('class' => $config)); } elseif (is_array($config)) { $config = new self($config); } elseif (!$config instanceof self) { throw new \InvalidArgumentException("Object creation data is invalid."); } $object = $config->instantiate($args, $base); return $object; }