Ахах, ну понятно все с тобой... говорили про одно, стало совсем другое... переводи тему дальше и сливайся еще больше, спор с тобой бесполезен, когда у тебя закончатся псевдоагрументы, ты скажешь, что я лох, ибо пишу на пхпВ жопе что ли? Извините Естественно, в одном. Это не решает проблемы расхождения реального инстанса и этих @property.
Я и приводил best vs bad practice вообще-то, чувак. Открой глаза шо ле.
Никак - мы все говнокодеры в глазах Вурдалакате. в контроллере будет место когда мне понадобится тот или иной сервис. а как я его получу если не таким $this->(sl|dic)->get('имя') образом?
феерично, ты предлагаешь заменить говнокод SL, еще большим говнокодом, так как один чувак написал, что SL это плохо, так как не умеет пользоваться инструментом?1) Можно тупо пихать во все контроллеры эти компоненты, но страдает lazyLoad
2) С другой строны можно пробовать отследить зависимости перед инициализацей обьекта контроллера через рефлексию, но это сродни лечению гланд через анальное отверстие
Ваще-то аргумент гораздо более весомее, чем "Вурдалак на phpclub.ru сказал". Для меня, по крайней мере.Argumentum ab auctoritate. «Не нашёл у Фаулера!»
Можно не пользоваться магией, ради бога. Описывайте методы ->getServiceName().потому что это гребаная магия и костыль
В принципе да, так и есть. А абстрактные "потом этот код станет ..." - они и есть абстрактные. Я сам люблю DI, но прекрасно понимаю, что 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 автоматически все нужное инжектит и вручную ничего get'ать не надо.DIC стал антипэттерном? вся симфани писана на антипэттерне? странно это...
ок, я показал пример, и показал кол-во вхождений getContainer - переубеди меня фактами и кодом...В каком месте симфони на этом? DI автоматически все нужное инжектит и вручную ничего get'ать не надо.
$ 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();
почитай уже код фв нормально, а то смешно ей богуУтверждать после этого, что «вся симфани» написана на «этом» — это больное воображение и выдавание желаемого за действительное.
Я грепнул весь код Symfonyуже код фв нормально, а то смешно ей богу
Да, ведь я могу себе это позволитьP.S. Ты до сих пор в резюме пишешь, что ты купил лицензию на phpStorm?
Посмотри внимательно, там две картинки, вторая про $this->container.P.S. Ты до сих пор в резюме пишешь, что ты купил лицензию на phpStorm?
ой да больно надо к тебе придираться и оправдываться, если бы я хотел придраться - я бы сказал - иди подучи английский - фараза nuff said не имеет ни грамматического ни лексического смысла.Nuff said, ты уже не знаешь к чему придраться, лишь бы оправдаться.