D'après ce que j'ai lu. Vous instanciez le UserController avec le paramètre CompanyController.
Cette instanciation est effectuée avant que vous n'ayez réellement envoyé l'appel Auth::login().
Comme vous instanciez le contrôleur de l'entreprise avec __construct avant d'exécuter confirmUser sur le userController l'objet companyController existe avant le Auth::login() l'appel est passé.