Size: a a a

2021 January 08

А

Антон in symfony
И про зависимости через сеттеры тоже писать не надо.
источник

D

Dmitry in symfony
а что значит со всеми зависимостями в вашем понимании ?
источник

А

Антон in symfony
Dmitry
а что значит со всеми зависимостями в вашем понимании ?
final class ServiceA
{
    public function __construct(ServiceB $b) {}
}
источник

D

Dmitry in symfony
и что ? обьект создать можно через рефлексию, накидать туда зависимостей как вам угодно
источник

А

Антон in symfony
Dmitry
и что ? обьект создать можно через рефлексию, накидать туда зависимостей как вам угодно
И у него не вызовется конструктор?
источник

D

Dmitry in symfony
нет, вы же сами дали метод
источник

А

Антон in symfony
Как тогда произойдет инициализация параметров?
источник

А

Антон in symfony
Dmitry
нет, вы же сами дали метод
Ну и зачем писать бред, что DI симфони не вызывает конструктор? Вызывает.
источник

D

Dmitry in symfony
Антон
Ну и зачем писать бред, что DI симфони не вызывает конструктор? Вызывает.
ну и зачем городить херню с утра ? где я написал что он не вызывает ?
источник

А

Антон in symfony
Dmitry
ну и зачем городить херню с утра ? где я написал что он не вызывает ?
> но конкретно симфони нужно смотреть DI контейнер как он создает обьекты, может он конструкторы то и не запускает

Предположение крайне странное.
источник

D

Dmitry in symfony
Антон
> но конкретно симфони нужно смотреть DI контейнер как он создает обьекты, может он конструкторы то и не запускает

Предположение крайне странное.
я вам как минимум 2 способа создания обьектов могу рассказать в контексте вопроса автора
1. обычный с конструктором
2. без конструктора через рефлексию

а может он просто ссылки держит на названия классов а обьект создает в момент первого обращения ?
а может сразу все обьекты создает в момент запуска ядра?

как я написал выше, я не знаю. я сделал предположение
источник

А

Антон in symfony
Dmitry
я вам как минимум 2 способа создания обьектов могу рассказать в контексте вопроса автора
1. обычный с конструктором
2. без конструктора через рефлексию

а может он просто ссылки держит на названия классов а обьект создает в момент первого обращения ?
а может сразу все обьекты создает в момент запуска ядра?

как я написал выше, я не знаю. я сделал предположение
Неважно, как и когда, конструктор вызовется. Если бы он не вызывался, то все твои сервисы с зависимостями не работали бы. Пример:

final class ServiceB
{
   public function do()
   {
       return 1;
   }
}

final class ServiceA
{
   private $b;

   public function __construct(ServiceB $b)
   {
       $this->b = $b;
   }

   public function some()
   {
       return $this->b->do();
   }
}

(new ReflectionClass(ServiceA::class))->newInstanceWithoutConstructor()->some(); // Uncaught Error: Call to a member function do() on null
источник

AD

Andrey Dembitskyi in symfony
Антон
Неважно, как и когда, конструктор вызовется. Если бы он не вызывался, то все твои сервисы с зависимостями не работали бы. Пример:

final class ServiceB
{
   public function do()
   {
       return 1;
   }
}

final class ServiceA
{
   private $b;

   public function __construct(ServiceB $b)
   {
       $this->b = $b;
   }

   public function some()
   {
       return $this->b->do();
   }
}

(new ReflectionClass(ServiceA::class))->newInstanceWithoutConstructor()->some(); // Uncaught Error: Call to a member function do() on null
Рефлексией можно и в свойства проставить зависимости)
источник

D

Dmitry in symfony
Антон
Неважно, как и когда, конструктор вызовется. Если бы он не вызывался, то все твои сервисы с зависимостями не работали бы. Пример:

final class ServiceB
{
   public function do()
   {
       return 1;
   }
}

final class ServiceA
{
   private $b;

   public function __construct(ServiceB $b)
   {
       $this->b = $b;
   }

   public function some()
   {
       return $this->b->do();
   }
}

(new ReflectionClass(ServiceA::class))->newInstanceWithoutConstructor()->some(); // Uncaught Error: Call to a member function do() on null
вы изначальный вопрос автора прочтите пожалуйста, ему важно когда конструктор вызывается, в этом вопрос заключался.
либо на старте когда формируется контейнер, либо в момент первого обращения. это две большие разницы в контексте изначального вопроса

а ваш код "просто не вызывает конструктор", не учитывая что зависимости можно вставлять через сеттеры и парсить все и тп
доктрина же гидрирует обьект через рефлексию и парсит
источник

А

Антон in symfony
Andrey Dembitskyi
Рефлексией можно и в свойства проставить зависимости)
Да, но контейнер так не делает.  По крайней мере, если им пользоваться без извращений.
источник

А

Антон in symfony
Dmitry
вы изначальный вопрос автора прочтите пожалуйста, ему важно когда конструктор вызывается, в этом вопрос заключался.
либо на старте когда формируется контейнер, либо в момент первого обращения. это две большие разницы в контексте изначального вопроса

а ваш код "просто не вызывает конструктор", не учитывая что зависимости можно вставлять через сеттеры и парсить все и тп
доктрина же гидрирует обьект через рефлексию и парсит
Я написал, если не юзать сеттеры. Ладно, я не читал вопрос автора, извиняюсь
источник

AD

Andrey Dembitskyi in symfony
Антон
Да, но контейнер так не делает.  По крайней мере, если им пользоваться без извращений.
Это было предположение, как он мог бы работать
источник

А

Антон in symfony
Andrey Dembitskyi
Это было предположение, как он мог бы работать
У сервисов симфони в конструкторе часто можно увидеть небольшую логику и исключения, так что вряд ли они минуют конструктор. Вообще не могу себе представить случай, когда именно контейнер мог бы так делать.
источник

D

Dmitry in symfony
Антон
Да, но контейнер так не делает.  По крайней мере, если им пользоваться без извращений.
я с удовольствием на досуге почитаю статью как работает контейнер симфони в деталях, вашу или если вы дадите ссылку.
до этого момента для меня он как кот шредингера - что хочешь там может быть
источник

👤U

👤 User in symfony
То есть всякие классы для того же дто лучше не забывать добавлять в эксклуды. Иначе на старте будут созданы бесполезные экземпляры.
источник