loader = new Loader(); } public function run(): void { $this->register_modules(); $this->loader->boot(); } private function register_modules(): void { /* |-------------------------------------------------------------------------- | Admin Menu |-------------------------------------------------------------------------- */ $this->loader->add( new Menu() ); /* |-------------------------------------------------------------------------- | Settings |-------------------------------------------------------------------------- */ $settings = new SettingsModule(); $this->loader->add( $settings ); /* |-------------------------------------------------------------------------- | Appearance |-------------------------------------------------------------------------- */ $appearance = new AppearanceModule(); $this->loader->add( $appearance ); /* |-------------------------------------------------------------------------- | Core Services |-------------------------------------------------------------------------- */ $purchase_repository = new PurchaseRepository(); $secure_token = new SecureToken(); $access_manager = new AccessManager( $purchase_repository, $secure_token ); $stripe_manager = new StripeManager( $settings->get_settings_manager() ); /* |-------------------------------------------------------------------------- | Payments |-------------------------------------------------------------------------- */ $this->loader->add( new StripeModule( $settings->get_settings_manager(), $purchase_repository, $access_manager, $secure_token ) ); /* |-------------------------------------------------------------------------- | Purchases |-------------------------------------------------------------------------- */ $this->loader->add( new PurchasesModule( $purchase_repository ) ); /* |-------------------------------------------------------------------------- | Content |-------------------------------------------------------------------------- */ $this->loader->add( new ContentLoader( $settings->get_settings_manager(), $appearance->get_appearance_manager(), $access_manager, $stripe_manager ) ); } }