Du könntest dir Frameworks anschauen, welche einen Modularen Seiten aufbau ermöglichen und dir von diesen Frameworks die register Methoden.
An sich brauchst du wie gesagt nur eine Klasse, welche als Loader dient und alle deine Komponenten registriert anhand vom Filesystem oder über Einträge in der Datenbank wie auch immer.
Dann müssen Abhängigkeiten registriert werden. Zum Beispiel ist eine Registrierung nur möglich, wenn die SMSVerify-Klasse ihr okay gibt.
Hierzu kannst du aber auch Code austauschen im Prozess deiner "Modul"-Installation...
Kannst ja einfach Dateien austauschen, wenn die richtigen Berechtigungen im modul Ordner vorhanden sind. Dann würde ich dir aber empfehlen die Module anhand des FileSystems zu erkennen und zu laden.
Erst solltest du dir aber Gedanken über Dependencies innerhalb deines Projektes machen und wie du diese umsetzen möchtest. Sowie über deine Vererbungs-Hirarchie..
Im Grunde ist die Planung des ganzen aufwändiger als die Umsetzung, da die Umsetzung nach stupiden Regeln, welche du vorher in deinem Plaungsprozess festlegst, erfolgt.
Hier mal ein Google Book als Beispiel: