Merge "Http::getProxy() method to get proxy configuration"
[lhc/web/wiklou.git] / includes / libs / ObjectFactory.php
index 6191612..c96a8a1 100644 (file)
@@ -57,7 +57,7 @@ class ObjectFactory {
         * constructor is non-public or non-existent
         */
        public static function getObjectFromSpec( $spec ) {
-               $args = isset( $spec['args'] ) ? $spec['args'] : array();
+               $args = isset( $spec['args'] ) ? $spec['args'] : [];
                $expandArgs = !isset( $spec['closure_expansion'] ) ||
                        $spec['closure_expansion'] === true;
 
@@ -86,7 +86,7 @@ class ObjectFactory {
                                if ( $expandArgs ) {
                                        $margs = static::expandClosures( $margs );
                                }
-                               call_user_func_array( array( $obj, $method ), $margs );
+                               call_user_func_array( [ $obj, $method ], $margs );
                        }
                }
 
@@ -128,8 +128,13 @@ class ObjectFactory {
         * @return mixed Constructed instance
         */
        public static function constructClassInstance( $clazz, $args ) {
+               // $args should be a non-associative array; show nice error if that's not the case
+               if ( $args && array_keys( $args ) !== range( 0, count( $args ) - 1 ) ) {
+                       throw new InvalidArgumentException( __METHOD__ . ': $args cannot be an associative array' );
+               }
+
                // TODO: when PHP min version supported is >=5.6.0 replace this
-               // function body with `return new $clazz( ... $args );`.
+               // with `return new $clazz( ... $args );`.
                $obj = null;
                switch ( count( $args ) ) {
                        case 0: