HTMLForm: Use ObjectFactory instead of Reflection
authorKunal Mehta <legoktm@member.fsf.org>
Sun, 14 Aug 2016 03:48:29 +0000 (20:48 -0700)
committerKunal Mehta <legoktm@member.fsf.org>
Sun, 14 Aug 2016 03:48:29 +0000 (20:48 -0700)
ObjectFactory has a hack that constructs an object directly if there are
less than 10 parameters, which there typically is for HTMLForm classes.
This is faster than using ReflectionClass, and whenever ObjectFactory is
updated to take advantage of the splat operator, this will automatically
use it as well.

And use ::class while we're at it.

Change-Id: I7a696c127c237713448b165b9b4faee13f4ff88e

includes/htmlform/HTMLForm.php

index a7acd8b..ff37e24 100644 (file)
@@ -275,14 +275,12 @@ class HTMLForm extends ContextSource {
 
                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;
                }