* 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;
if ( $expandArgs ) {
$margs = static::expandClosures( $margs );
}
- call_user_func_array( array( $obj, $method ), $margs );
+ call_user_func_array( [ $obj, $method ], $margs );
}
}
* @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: