Инициализация и наследование классов php

В общем сейчас я инициализирую классы прямо в моем классе Controller, от которого наследуются остальные Котроллеры

 <?php
    namespace system;
    
    use system\Factory\ControllerFactory;
    
    class Controller
    {
    
        public $services;
        public $request;
        /**
         * Controller constructor.
         */
        public function __construct()
        {
            $controllerFactory = new ControllerFactory();
            $this->services = $controllerFactory->getServices();
            $this->request = $controllerFactory->getRequest();
        }
    }

Но хочется сделать так чтобы эти классы не инициализировались в конструкторе, а передавались уже готовые, чтобы можно было не трогать class Controller, но добавлять ему нужные объекты динамически. Чтобы Controller был масштабируемым.

Пробовал делать седлающим образом

 <?php
namespace system;

 
use system\ServiceLocator\ServiceContainer;

class Controller
{

    public $services;
    /**
     * Controller constructor.
     */
    public function __construct(ServiceContainer $serviceContainer)
    {
        $this->services = $serviceContainer;
    }
}

Но тут проблема заключается в том что при инициализации дочерних классов, каждый раз инициализируется новый класс Controller и из-за этого вылезает ошибка что в конструктор не передано значений.

Я надеюсь что я смог объяснить задачу. Прошу подсказать, показать или хотя-бы направить на правильный путь.


Ответы (0 шт):