From f9584f09b5b4aacf84ec8f90ae01f9a050dd8a8e Mon Sep 17 00:00:00 2001 From: jackpoz Date: Wed, 20 Oct 2021 20:54:04 +0200 Subject: [PATCH] Handle is_callable returning false with instance methods on static types since PHP 8 See https://php.watch/versions/8.0/non-static-static-call-fatal-error --- index.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/index.php b/index.php index c5ce8a19..a42ba2bd 100644 --- a/index.php +++ b/index.php @@ -116,6 +116,17 @@ switch ($pageCall) $class = $cleanName.'Page'; if (is_callable([$class, 'display'])) (new $class($pageCall, $pageParam))->display(); + else if (method_exists($class, 'display')) + { + // PHP 8 requires an instance of $class for is_callable to work + $classInstance = new $class($pageCall, $pageParam); + if (is_callable([$classInstance, 'display'])) + $classInstance->display(); + else if (isset($_GET['power'])) + die('$WowheadPower.register(0, '.User::$localeId.', {})'); + else // in conjunction with a proper rewriteRule in .htaccess... + (new GenericPage($pageCall))->error(); + } else if (isset($_GET['power'])) die('$WowheadPower.register(0, '.User::$localeId.', {})'); else // in conjunction with a proper rewriteRule in .htaccess...