public static function factory($type, $name, $label = null)
{
// backward compatibility: `file` type used to be called `attachment`
if ($type === 'attachment') {
$type = 'file';
}
$type = str_replace(' ', '_', ucwords(str_replace('_', ' ', $type)));
$class = __NAMESPACE__ . '\\' . $type . '_Field';
if (!class_exists($class)) {
Incorrect_Syntax_Exception::raise('Unknown field "' . $type . '".');
$class = __NAMESPACE__ . '\\Broken_Field';
}
$field = new $class($name, $label);
$field->type = $type;
return $field;
}