From 51700c716f3898578434f3097252ffb91a22ea48 Mon Sep 17 00:00:00 2001
From: jrfnl <jrfnl@users.noreply.github.com>
Date: Sat, 20 Jul 2019 18:14:07 +0200
Subject: [PATCH] Simplify & modernize *::__call()

The callback in these functions is always checked against a limited list of valid callbacks and those are not problematic, so these can be safely changed to dynamic function calls.
---
 src/wp-admin/includes/class-wp-list-table.php | 2 +-
 src/wp-includes/class-wp-comment-query.php    | 2 +-
 src/wp-includes/class-wp-oembed.php           | 2 +-
 src/wp-includes/class-wp-query.php            | 2 +-
 src/wp-includes/class-wp-roles.php            | 2 +-
 src/wp-includes/class-wp-user-query.php       | 2 +-
 src/wp-includes/class-wp-user.php             | 2 +-
 src/wp-includes/class-wp-xmlrpc-server.php    | 2 +-
 8 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/wp-admin/includes/class-wp-list-table.php b/src/wp-admin/includes/class-wp-list-table.php
index 021547fd18..0994e197ea 100644
--- a/src/wp-admin/includes/class-wp-list-table.php
+++ b/src/wp-admin/includes/class-wp-list-table.php
@@ -239,7 +239,7 @@ class WP_List_Table {
 	 */
 	public function __call( $name, $arguments ) {
 		if ( in_array( $name, $this->compat_methods ) ) {
-			return call_user_func_array( array( $this, $name ), $arguments );
+			return $this->$name( ...$arguments );
 		}
 		return false;
 	}
diff --git a/src/wp-includes/class-wp-comment-query.php b/src/wp-includes/class-wp-comment-query.php
index eba9ddf54e..7e055fc1b1 100644
--- a/src/wp-includes/class-wp-comment-query.php
+++ b/src/wp-includes/class-wp-comment-query.php
@@ -124,7 +124,7 @@ class WP_Comment_Query {
 	 */
 	public function __call( $name, $arguments ) {
 		if ( 'get_search_sql' === $name ) {
-			return call_user_func_array( array( $this, $name ), $arguments );
+			return $this->get_search_sql( ...$arguments );
 		}
 		return false;
 	}
diff --git a/src/wp-includes/class-wp-oembed.php b/src/wp-includes/class-wp-oembed.php
index dce67fcb41..ffbdb45b0e 100644
--- a/src/wp-includes/class-wp-oembed.php
+++ b/src/wp-includes/class-wp-oembed.php
@@ -235,7 +235,7 @@ class WP_oEmbed {
 	 */
 	public function __call( $name, $arguments ) {
 		if ( in_array( $name, $this->compat_methods ) ) {
-			return call_user_func_array( array( $this, $name ), $arguments );
+			return $this->$name( ...$arguments );
 		}
 		return false;
 	}
diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php
index 3d7374cf93..6da6909a86 100644
--- a/src/wp-includes/class-wp-query.php
+++ b/src/wp-includes/class-wp-query.php
@@ -3560,7 +3560,7 @@ class WP_Query {
 	 */
 	public function __call( $name, $arguments ) {
 		if ( in_array( $name, $this->compat_methods ) ) {
-			return call_user_func_array( array( $this, $name ), $arguments );
+			return $this->$name( ...$arguments );
 		}
 		return false;
 	}
diff --git a/src/wp-includes/class-wp-roles.php b/src/wp-includes/class-wp-roles.php
index 18b0d55035..6e3004c37c 100644
--- a/src/wp-includes/class-wp-roles.php
+++ b/src/wp-includes/class-wp-roles.php
@@ -101,7 +101,7 @@ class WP_Roles {
 	 */
 	public function __call( $name, $arguments ) {
 		if ( '_init' === $name ) {
-			return call_user_func_array( array( $this, $name ), $arguments );
+			return $this->_init( ...$arguments );
 		}
 		return false;
 	}
diff --git a/src/wp-includes/class-wp-user-query.php b/src/wp-includes/class-wp-user-query.php
index 33408e51d0..56a0dce6bd 100644
--- a/src/wp-includes/class-wp-user-query.php
+++ b/src/wp-includes/class-wp-user-query.php
@@ -885,7 +885,7 @@ class WP_User_Query {
 	 */
 	public function __call( $name, $arguments ) {
 		if ( 'get_search_sql' === $name ) {
-			return call_user_func_array( array( $this, $name ), $arguments );
+			return $this->get_search_sql( ...$arguments );
 		}
 		return false;
 	}
diff --git a/src/wp-includes/class-wp-user.php b/src/wp-includes/class-wp-user.php
index 73f7cdf0d5..a1c2b6e2c4 100644
--- a/src/wp-includes/class-wp-user.php
+++ b/src/wp-includes/class-wp-user.php
@@ -444,7 +444,7 @@ class WP_User {
 	 */
 	public function __call( $name, $arguments ) {
 		if ( '_init_caps' === $name ) {
-			return call_user_func_array( array( $this, $name ), $arguments );
+			return $this->_init_caps( ...$arguments );
 		}
 		return false;
 	}
diff --git a/src/wp-includes/class-wp-xmlrpc-server.php b/src/wp-includes/class-wp-xmlrpc-server.php
index 72aeef2048..8dfc737231 100644
--- a/src/wp-includes/class-wp-xmlrpc-server.php
+++ b/src/wp-includes/class-wp-xmlrpc-server.php
@@ -177,7 +177,7 @@ class wp_xmlrpc_server extends IXR_Server {
 	 */
 	public function __call( $name, $arguments ) {
 		if ( '_multisite_getUsersBlogs' === $name ) {
-			return call_user_func_array( array( $this, $name ), $arguments );
+			return $this->_multisite_getUsersBlogs( ...$arguments );
 		}
 		return false;
 	}
-- 
2.21.0.windows.1

