public static function factory($settings, $owner) { $settings = array_merge(self::$defaultSettings, $settings); $className = 'ParadoxTitanFrameworkOption' . str_replace(' ', '', ucwords(str_replace('-', ' ', $settings['type']))); // assume all the classes are already required if (!class_exists($className) && !class_exists($settings['type'])) { ParadoxTitanFramework::displayFrameworkError(sprintf(__('Option type or extended class %s does not exist.', PARADOX_TF_I18NDOMAIN), '<code>' . $settings['type'] . '</code>', $settings), $settings); return null; } if (class_exists($className)) { $obj = new $className($settings, $owner); return $obj; } $className = $settings['type']; $obj = new $className($settings, $owner); return $obj; }