apiService ??= new ArcadiaApiService( $this->apiConfig ); } public function createEmployeeService(): EmployeeService { return $this->employeeService ??= new ArcadiaEmployeeService( new EmployeeApiRepository( $this->apiClient, new EmployeeHydrator() ) ); } public function createIncoService(): IncoService { return $this->incoService ??= new ArcadiaIncoService( new IncoApiRepository( $this->apiClient, new IncoHydrator() ), new IncoShortApiRepository( $this->apiClient, new IncoShortHydrator() ), new IncoCompoApiRepository( $this->apiClient, new IncoCompoHydrator() ) ); } public function createBrandService(): BrandService { return $this->brandService ??= new ArcadiaBrandService( new BrandApiRepository( $this->apiClient, new BrandHydrator() ) ); } public function employeeService(): EmployeeService { return $this->createEmployeeService(); } public function incoService(): IncoService { return $this->createIncoService(); } public function brandService(): BrandService { return $this->createBrandService(); } }