switch ( $displayFormat ) {
case 'vform':
- $reflector = new ReflectionClass( 'VFormHTMLForm' );
- return $reflector->newInstanceArgs( $arguments );
+ return ObjectFactory::constructClassInstance( VFormHTMLForm::class, $arguments );
case 'ooui':
- $reflector = new ReflectionClass( 'OOUIHTMLForm' );
- return $reflector->newInstanceArgs( $arguments );
+ return ObjectFactory::constructClassInstance( OOUIHTMLForm::class, $arguments );
default:
- $reflector = new ReflectionClass( 'HTMLForm' );
- $form = $reflector->newInstanceArgs( $arguments );
+ /** @var HTMLForm $form */
+ $form = ObjectFactory::constructClassInstance( HTMLForm::class, $arguments );
$form->setDisplayFormat( $displayFormat );
return $form;
}
$this->mFieldTree = $loadedDescriptor;
}
+ /**
+ * @param string $fieldname
+ * @return bool
+ */
+ public function hasField( $fieldname ) {
+ return isset( $this->mFlatFields[$fieldname] );
+ }
+
+ /**
+ * @param string $fieldname
+ * @return HTMLFormField
+ * @throws DomainException on invalid field name
+ */
+ public function getField( $fieldname ) {
+ if ( !$this->hasField( $fieldname ) ) {
+ throw new DomainException( __METHOD__ . ': no field named ' . $fieldname );
+ }
+ return $this->mFlatFields[$fieldname];
+ }
+
/**
* Set format in which to display the form
*