Если вы под "модулем в backend" подразумеваете аналог плагинов в Wordpress, то сделайте для каждого модуля установку через какой-нибудь метод install(), в котором вы создаёте необходимые таблицы, вносите/удаляете из них данные и т.д.
SiteController - это класс. Чтобы у класса вызывать метод через :: (ClassFoo::bar()), необходимо, чтобы метод bar был статическим (public static bar() {}).
Рекомендую не зацикливаться на каком-то одном фреймворке, а просто попытаться реализовать свой MVC фреймворк. Это даст какие-то теоретические основы + практические навыки.