Как создать экземпляр класса по его конструктору?

164
08 апреля 2019, 02:40

есть следующий код:

class Logger
{
    public function __construct(Config $config)
    {
        $this->mode = $config->get('logger.mode');
    }
}
class DB
{
    public function connect($dbUser, $dbPass)
    {
    }
}
class TodoService
{
    public function __construct(
        TodoListHelper $todoHelper,
        ItemHelper $itemHelper
    )
    {
        $this->todoHelper = $todoHelper;
        $this->itemHelper = $itemHelper;
    }
}

Далее есть метод autoMake, как с помощью метода можно создать экземпляр ?

public function autoMake($contract)
    {
        $getDependencies = function ($contract) {
        };
        $deps = $getDependencies($contract);

        return new $contract($deps);
    }
Answer 1

Чтобы с помощью метода autoMake($contract) создать екземпляр нужно его поместить в класс

class autoMake
{
    private $contract;
    public function __construct($contract)
    {
        $this->contract = $contract;
    }
    public function autoMake()
    {
        $getDependencies = function ($contract) {
        };
        $deps = $getDependencies($contract);

        return new $contract($deps);
    }
}

Екземпляр класу

$autoMake = new autoMake(//передаєм контракт);
echo $autoMake->autoMake();
READ ALSO
Как установить вручную индексы в цикле for PHP?

Как установить вручную индексы в цикле for PHP?

Как установить вручную все индексы $i в цикле for PHP без всякого шага, чтобы отдельно с каждой переменной не связываться?

192
При выводе одной записи из базы методом getById($id) возвращает bool(false)

При выводе одной записи из базы методом getById($id) возвращает bool(false)

При выводе одной записи из базы методом getById($id) возвращает bool(false) но метод getAll() работает нормально

183
Зачем в symfony метод generateUrl

Зачем в symfony метод generateUrl

Изучаю symfony, читаю документациюВ разделе роуты https://symfony

195
Не пойму, что значит <=

Не пойму, что значит <=

Просвятите меня, пожалуйста :)

160