Я начинаю новый проект и создаю базу для работы. Несколько вопросов поднялись, и я, вероятно, буду спрашивать здесь немало, надеюсь, что найду ответы.
Первый шаг - обрабатывать зависимости для объектов. Я решил пойти с шаблоном проектирования инъекций зависимостей, к которому я отношусь несколько новым, для обработки всего этого для приложения.
Когда я действительно кодировал это, я столкнулся с проблемой. Если класс имеет несколько зависимостей и вы хотите передать несколько зависимостей через конструктор (чтобы они не могли быть изменены после создания экземпляра объекта).
Как вы это делаете, не передавая массив зависимостей, используя call_user_func_array(), eval() или Reflection? Это то, что я ищу:
<?php
class DI
{
    public function getClass($classname)
    {
        if(!$this->pool[$classname]) {
            # Load dependencies
            $deps = $this->loadDependencies($classname);
            # Here is where the magic should happen
            $instance = new $classname($dep1, $dep2, $dep3);
            # Add to pool
            $this->pool[$classname] = $instance;
            return $instance;
        } else {
                return $this->pool[$classname];
        }
    }
}
Опять же, я хотел бы избежать самых дорогостоящих методов вызова класса. Любые другие предложения?
Кроме того, как мне получить доступ к классам класса DI внутри классов, например, в контроллерах, которым требуется доступ к различным моделям? Должен ли я называть его статически или передавать его по каждому классу, который потребует его? Я не думаю, что последняя идея возможна.
Спасибо всем.
