У меня вопрос по поводу ленивых сервисов symfony2. Когда мы должны использовать ленивые услуги, и когда мы должны избегать их? Есть ли накладные расходы, если мы используем ленивые услуги?
От документация:
В некоторых случаях вы можете захотеть внедрить сервис, который немного тяжело создать, но не всегда используется внутри вашего объекта. Например, представьте, что у вас есть NewsletterManager и вы внедряете в него почтовую службу. Только несколько методов вашего NewsletterManager фактически используют почтовую программу, но даже когда вам это не нужно, служба почтовой службы всегда создается для создания вашего NewsletterManager.
Настройка ленивых сервисов — один из ответов на этот вопрос. В случае ленивого сервиса «прокси» почтового сервиса фактически внедряется. Он выглядит и действует так же, как почтовый, за исключением того, что почтовый почтовый ящик фактически не создается, пока вы не взаимодействуете с прокси каким-либо образом.
Да, есть некоторые накладные расходы. Но это минимально. Вы должны избегать использования ленивых сервисов, когда они вам не нужны. (Легко как то).
Если ваша служба A имеет 3 метода и зависит от B и C. Если вы знаете, что B используется во всех 3 методах, а C i используется только в одном методе, то вы может рассмотрите объявление C как ленивый. Вы должен объявить ленивым, если C — тяжелый сервис. В этом примере не будет никакой выгоды объявлять B ленивым … так что не … =)
Других решений пока нет …