Вы всё делаете правильно, метод render() и не должен быть статическим, но что бы всё заработало корректно, вам нужно использовать другой вид записи.
Router::get('/', 'Неймспейс\\SiteController@home');
Либо использовать PHP 8.0
Постараюсь вкратце пояснить почему.
Когда вы пишете такую конструкцию
use App\Controllers; // к примеру
//...
Router::get('/', [SiteController::class, 'home']);
SiteController::class как бы так сказать, преобразуется в App\Controllers\SiteController
Но автор библиотеки плевать хотел на эти ваши неймспейсы и всё что вы там себе придумали.
Он берёт данные, которые вы передали и получает массив вида
[
0 => 'App\Controllers\SiteController',
1 => 'home'
];
Потом проверяет этот массив на is_callable()
https://github.com/skipperbent/simple-php-router/b...
А такое выражение до PHP8 возвращает true, поэтому всё это дело отправляется дальше на исполнение в
call_user_func_array() пытаясь вызвать метод статически
https://github.com/skipperbent/simple-php-router/b...
Отсюда и ошибка.
Объект же класса ещё не создан
---
Автор предлагает все неймспейсы указать отдельным методом до старта
SimpleRouter::setDefaultNamespace('App\Controllers');
Тогда можно указывать класс без неймспейса и всё будет работать.
Но в этом случае любой анализатор кода либо тот же Шторм скажет вам, что вы делаете какую-то дичь.
И как поступить решать уже вам.