How to use Service Layer in Base Controller?

How to use Service Layer in Base Controller?

I'm creating my own MVC application for learning purposes and I'm stuck in Base Controller and usage of Service Layer in it.

In my app, Base Controller is layer where I load header navigation, footer links, some User credentials etc. Then, other Controllers (Index, Blog, Category...) extends this Base Controller and automatically loads needed stuff.

By my opinion, there are two possible solutions:

1) Create BaseService and put all methods that's used from BaseController

class BaseController
{
    public __construct()
    {
        $service = $this->serviceFactory->build('Base');

        $this->response->navigation = $service->loadNavigation();
        $this->response->footer_links = $service->loadFooterLinks();
        $this->response->user_info = $service->loadUser();
    }
}
2) Inject multiple Services (Category, User...) in BaseController

class BaseController
{
    public __construct()
    {
        $categoryService = $this->serviceFactory->build('Category');
        $userService = $this->serviceFactory->build('User');

        $this->response->navigation = $categoryService->loadNavigation();
        $this->response->footer_links = $categoryService->loadFooterLinks();
        $this->response->user_info = $userService->loadUser();
    }
}
I think the second solution is better. Or maybe some third option, any suggestions ?


你可能感兴趣的:(How to use Service Layer in Base Controller?)