/**
* Handle PHP errors issued inside a hook. Catch errors that have to do
- * with a function expecting a reference, and pass all others through to
- * MWExceptionHandler::handleError() for default processing.
+ * with a function expecting a reference, missing arguments, or wrong argument
+ * types. Pass all others through to to the default error handler.
+ *
+ * This is useful for throwing errors for major callback invocation errors
+ * (with regard to parameter signature) which PHP just gives warnings for.
*
* @since 1.18
*
* @return bool
*/
public static function hookErrorHandler( $errno, $errstr ) {
- if ( strpos( $errstr, 'expected to be a reference, value given' ) !== false ) {
+ if ( strpos( $errstr, 'expected to be a reference, value given' ) !== false
+ || strpos( $errstr, 'Missing argument ' ) !== false
+ || strpos( $errstr, ' expects parameter ' ) !== false
+ ) {
throw new MWHookException( $errstr, $errno );
}
- // Delegate unhandled errors to the default MW handler
- return call_user_func_array(
- 'MWExceptionHandler::handleError', func_get_args()
- );
+ // Delegate unhandled errors to the default handlers
+ return false;
}
}