* 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 are sometimes specified in a 'name' => $value format for readability
- $args = array_values( $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
// with `return new $clazz( ... $args );`.