Синглтон, антипаттерн и все-все-все

хорошо, не в сервисах и тем более не в моделях. ( модель в смысле MVC ) но контроллер то имеет или я не понимаю как работает DI
 
Последнее редактирование:
В жопе что ли? Извините :D Естественно, в одном. Это не решает проблемы расхождения реального инстанса и этих @property.


Я и приводил best vs bad practice вообще-то, чувак. Открой глаза шо ле.

Ахах, ну понятно все с тобой... говорили про одно, стало совсем другое... переводи тему дальше и сливайся еще больше, спор с тобой бесполезен, когда у тебя закончатся псевдоагрументы, ты скажешь, что я лох, ибо пишу на пхп
 
Redjik, я соглашусь что если мы будем пихать везде sl то можно сразу было унаследоваться от object. по сути одно и тоже.
у меня в другом вопрос. я могу заинжектить в контроллер некий request. но что произойдет в той или иной акции я не знаю поэтому заранее инжектить модель я не могу. те. в контроллере будет место когда мне понадобится тот или иной сервис. а как я его получу если не таким $this->(sl|dic)->get('имя') образом?
 
WMix, я и говорил уже, что нужно просто аккуратно пользоваться инструментом, know your tools.
те. в контроллере будет место когда мне понадобится тот или иной сервис. а как я его получу если не таким $this->(sl|dic)->get('имя') образом?
Никак - мы все говнокодеры в глазах Вурдалака :D
 
WMix, ну такое тут уже когда-то обсуждалось, ты либо можешь ижектить в сам action:
PHP:
public function viewAction(Request $request, Mailer $mailer)
но такое не все фреймворки поддерживают, либо через сеттеры, например.
 
1) Можно тупо пихать во все контроллеры эти компоненты, но страдает lazyLoad
2) С другой строны можно пробовать отследить зависимости перед инициализацей обьекта контроллера через рефлексию, но это сродни лечению гланд через анальное отверстие
феерично, ты предлагаешь заменить говнокод SL, еще большим говнокодом, так как один чувак написал, что SL это плохо, так как не умеет пользоваться инструментом?
 
Argumentum ab auctoritate. «Не нашёл у Фаулера!»
Ваще-то аргумент гораздо более весомее, чем "Вурдалак на phpclub.ru сказал". Для меня, по крайней мере.

потому что это гребаная магия и костыль
Можно не пользоваться магией, ради бога. Описывайте методы ->getServiceName().

Отличие SL от DI в общем и целом одно - четкость показанных зависимостей. Что очень важно в случае, когда... впрочем, лучше процитирую "не авторитета":
So the primary issue is for people who are writing code that expects to be used in applications outside of the control of the writer. In these cases even a minimal assumption about a Service Locator is a problem.
В принципе да, так и есть. А абстрактные "потом этот код станет ..." - они и есть абстрактные. Я сам люблю DI, но прекрасно понимаю, что SL - удобнее. А "удобный" DI быстро превращается в ад с конфигами или аннотациями и работой через контейнер "создай класс, вызови метод" - где, к слову, имена классов и методов будут стрингами же, да? Вот тебе и проблемы с опечатками и автокомплитами. Ну хз, может есть идеальный контейнер, который это решает.
 
В Symfony по желанию контейнер тащится только в Controller'ы и Command'ы. А если такого желания нет, то тыц и тыц.
Утверждать после этого, что «вся симфани» написана на «этом» — это больное воображение и выдача желаемого за действительное.
Код:
$ grep 'getContainer(' -R . | grep -v 'Test.php' | grep -v '.twig' | grep -v 'Command.php' | wc -l
13

$ grep 'getContainer(' -R . | grep -v 'Test.php' | grep -v '.twig' | grep -v 'Command.php'
./Symfony/Bundle/FrameworkBundle/Client.php:    public function getContainer()
./Symfony/Bundle/FrameworkBundle/Client.php:        return $this->kernel->getContainer();
./Symfony/Bundle/FrameworkBundle/Client.php:        if (!$this->kernel->getContainer()->has('profiler')) {
./Symfony/Bundle/FrameworkBundle/Client.php:        return $this->kernel->getContainer()->get('profiler')->loadProfileFromResponse($this->response);
./Symfony/Bundle/FrameworkBundle/Client.php:        if ($this->kernel->getContainer()->has('profiler')) {
./Symfony/Bundle/FrameworkBundle/Client.php:            $this->kernel->getContainer()->get('profiler')->enable();
./Symfony/Bundle/FrameworkBundle/Client.php:            $profilerCode = '$kernel->getContainer()->get(\'profiler\')->enable();';
./Symfony/Bundle/FrameworkBundle/HttpCache/HttpCache.php:        $this->getKernel()->getContainer()->set('cache', $this);
./Symfony/Bundle/FrameworkBundle/HttpCache/HttpCache.php:        $this->getKernel()->getContainer()->set('esi', $this->getEsi());
./Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php:        $client = static::$kernel->getContainer()->get('test.client');
./Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php:    public function getContainer()
./Symfony/Component/HttpKernel/Kernel.php:    public function getContainer()
./Symfony/Component/HttpKernel/KernelInterface.php:    public function getContainer();
 
Последнее редактирование:
Лол, пример на отборный говнокод, чтобы доказать свою правоту - это круто!
Бизнес логика - примерно 40% приложения (50%-база, 10% - шаблоны и вид), если контроллеры для тебя это так, пшик - то попробуй уже что-нибудь написать, а не разглагольствовать на форумах.

и да, ты еще $this->container поищи - будешь удивлен, я уж не говорю, что другие бандлы (кроме фв), довольно активно используют SL

Ну кончено увидеть пример с new Response в контроллере от человека, который с пеной у рта говорил, что DI наша мать и отец - похохотал.

Утверждать после этого, что «вся симфани» написана на «этом» — это больное воображение и выдавание желаемого за действительное.
почитай уже код фв нормально, а то смешно ей богу
ты прочитал код пары мелких бандлов и мануал - этого недостаточно
 
Не грепай а почитай, ЛОЛ.
2013-12-18_1355.png

2013-12-18_1356.png
 
А уж если искать в других бандлах и бриджах - цифра увеличится в 2 раза.
Ты безнадежен.

ЗЫ. нормально так съехал с темы про говнокод
 
Redjik, успокойся, не нервничай, почитай моё сообщение ещё раз и пойми, что я исключил из грепа.

P.S. Ты до сих пор в резюме пишешь, что ты купил лицензию на phpStorm? :D
 
P.S. Ты до сих пор в резюме пишешь, что ты купил лицензию на phpStorm? :D
Да, ведь я могу себе это позволить :D :D :D

P.S. Ты до сих пор в резюме пишешь, что ты купил лицензию на phpStorm? :D

Посмотри внимательно, там две картинки, вторая про $this->container.

да и вообще 69 общее - 8 на тесты ... ну никак не получается 13, странный греп у тебя, ох странный

upd, упс - не туда посмотрел, но в целом мысль ясна я думаю
 
Nuff said, ты уже не знаешь к чему придраться, лишь бы оправдаться.
ой да больно надо к тебе придираться и оправдываться, если бы я хотел придраться - я бы сказал - иди подучи английский - фараза nuff said не имеет ни грамматического ни лексического смысла.
nuff to say хотя бы, а лучше nothing все же, а не подонковский сленг

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