Непонятно зачем вам тут вообще класс...
Если пишите класс, не используйте статику. Вообще. Статические методы могут облегчать доступ к объекту, туда можно выносить какую-то простенькую логику инициализации (фабрики как статические методы) но просто так городить статику...
Что до обязательного наличия конструктора - оно не обязательно. Проблема в статическом методе router, который имеет одно имя с классом и воспринимается как конструктор. Но конструктор не может быть статическим. Когда вы определяете явно конструктор - то проблема "исчезает"...
PHP Fatal error: Constructor Router::router() cannot be static
Об этом вам ошибки и говорят, учитесь их читать. Как вариант, просто переименуйте его в handleRoute или чего-то такое.