> How about just setting the field in the constructor?

Doing work in the constructor should be avoided.

SpecialSMWAdmin actually should be put into its own functional class to make it possible to encapsulate it from the SpecialPage class construct (but that's a store a whole new PR).