Короче почитал документацию про тэги, какая то дичь, серьезно. Такие простые вещи, а сделаны так сложно, да и на том же Pimple, такое реализуется куда лучше
если конечно я правильно понимая работу самого Pimple и тэгов в Symfony Di, хотя может и пример они выбрали неудачный
_____________ Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Ron
11.04.2016 - 22:33
Это. А ты в курсе, что во фреймворке Slim используется Pimple?
И да, нужен лайтовый пример, лучше всего сразу много и классы чтобы привязаны были к жизни, а не ExampleA и т.д. От таких названий в глазах рябит, они все выглядят одинаково при беглом взгляде. Приходится вчитываться и ваще такой пример читать безумно трудно.
Цитата (chee @ 26.03.2016 - 12:03)
который будет строить ООП систему в качестве обучения, при этом система должна будет строиться на основе какого-то DI контейнера.
Зачем тебе такой гемор? Лучше бы дал тот же Pimple по нему документация есть раз, и второе - сообществу о нем хорошо известно. Можно задавать вопросы на форумах, гуглить и т.д.
Так получилось, что ты гемор себе обрел. Все вопросы к тебе. И по доке и по всему.
Да ты б хоть UML диаграммку что ли чирканул, раз для обучения-то!
chee
12.04.2016 - 00:17
Цитата (Ron @ 11.04.2016 - 22:33)
А ты в курсе, что во фреймворке Slim используется Pimple?
И, что?
Цитата (Ron @ 11.04.2016 - 22:33)
И да, нужен лайтовый пример, лучше всего сразу много и классы чтобы привязаны были к жизни, а не ExampleA и т.д. От таких названий в глазах рябит, они все выглядят одинаково при беглом взгляде. Приходится вчитываться и ваще такой пример читать безумно трудно.
Мне нужно было показать как работает контейнераи типичные сценарии его использования, то что тебе не нравится название классов, что поделаешь, на вкус и цвет ...
Зачем тебе такой гемор? Лучше бы дал тот же Pimple по нему документация есть раз, и второе - сообществу о нем хорошо известно. Можно задавать вопросы на форумах, гуглить и т.д.
боже мой, это тупо контейнеры зависимостей, какие по ним могут быть вопросы? Ты все переусложняешь. Это же не Symfony DI с кучей всяких свистелок.
Цитата (Ron @ 11.04.2016 - 22:33)
Так получилось, что ты гемор себе обрел. Все вопросы к тебе. И по доке и по всему.
Да ты б хоть UML диаграммку что ли чирканул, раз для обучения-то
Какой гемор? Ты о чём? Некоторые замечание годные, некоторые просто дело вкуса. Какую UML диаграмку? Тут класс на 100 строк, с одной обязанностью - управлять зависимостями.
_____________ Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Ron
12.04.2016 - 00:39
chee, так чего я получу-то? Что описывается в метадате? У меня объект mysqlwrapper зависит от объекта config. Я хочу чтобы мне mysqlwrapper прилетел подготовленный, с проинжекченным в его конструктор объектом config. Как этого добиться?
Что я получу после вот этого вызова? $this->getContainer()->get('ExampleCMS\\Application'); Коллекцию обектв, описанных через array метадаты?
Я вот честно не понимаю как это всё юзать. Pimple открыл, сразу всё понятно. Здесь мне придется копать (трейсить) твой код. А я желанием не горю. =)
chee
12.04.2016 - 01:40
Цитата (Ron @ 12.04.2016 - 00:39)
chee, так чего я получу-то? Что описывается в метадате? У меня объект mysqlwrapper зависит от объекта config.
$container->get('Ron\MysqlWrapper');// Получим объект с внедреными зависимостями
Цитата (Ron @ 12.04.2016 - 00:39)
Pimple открыл, сразу всё понятно. Здесь мне придется копать (трейсить) твой код. А я желанием не горю. =)
Проблема в том, что ты не понимаешь концепцию. Странно конечно, учитывая что она простая.
Цитата (Ron @ 12.04.2016 - 00:39)
Что я получу после вот этого вызова? $this->getContainer()->get('ExampleCMS\\Application');
Ты получишь экземпляр приложения, будет ли это инстанс класса ExampleCMS\Application или другой, зависит от интерфейса, в данном случае там будет не ExampleCMS\Application, так как ExampleCMS\Application имеет интерфейс посредника и он готовит другой объект, который и будет помещен в контейнер вместо ExampleCMS\Application.
_____________ Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Ron
12.04.2016 - 02:13
О боги, ты меня заставил-таки заглянуть в код. ))) Ок, я всё понял, только нафига выставлять зависимости в свойства? Конструктор ведь отработает уже к этому времени, а мне нужно, например, перед использованием чего-нибудь сделать с прилетевшей зависимостью. Ну я не знаю, дослать какие-нибудь флаги или конфиг. И вообще заполнить свои свойства из геттеров зависимости - ХЗ. =)
Или это у тебя через медиатор делается? Походу да. Ок, ясн понятн. )
О боги, ты меня заставил-таки заглянуть в код. )))
Никогда мне вас, оопэшников, не понять.... Три дня расуждать о том, чего даже не видел.
_____________ Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.
Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Ron
12.04.2016 - 03:03
Цитата (twin @ 12.04.2016 - 02:45)
Никогда мне вас, оопэшников, не понять.... Три дня расуждать о том, чего даже не видел.
И? Что? =) Зачем мне смотреть в чужой код? Описания преимуществ и хорошей доки по использованию более чем достаточно. =)
twin
12.04.2016 - 05:37
Я бы от любопытства помер.
_____________ Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.
Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
twin
12.04.2016 - 05:50
chee Не врубаюсь, а как второй объект получить? Снова в другой контейнер прописывать?
_____________ Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.
Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
chee
12.04.2016 - 10:10
twin, второй обьект будет в свойстве $config первого.
Ron, видимо твоя проблема была в том что ты думал об этом контейнере как о pimple, проецировал его методы работы на это решение. Для таких случаев доки не сработают
_____________ Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Ron
12.04.2016 - 10:25
Цитата (chee @ 12.04.2016 - 10:10)
Для таких случаев доки не сработают wink.gif
Вот как раз для таких случаев дока и нужна. =) Причем лучше всего с описанием алгоритма. Ну это может быть и лишнее, вполне достаточно хорошего примера с комментариями.
chee
12.04.2016 - 10:51
Ron, концепция описана в readme на гите, у меня такое ощущение что ты ее не читал.
_____________ Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
12.04.2016 - 10:52
Цитата (chee @ 12.04.2016 - 06:10)
второй обьект будет в свойстве $config первого.
Не догоняю. Покажи на примере плиз.
_____________ Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.
Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
bestxp
12.04.2016 - 10:53
Цитата (chee @ 11.04.2016 - 21:34)
Короче почитал документацию про тэги, какая то дичь, серьезно. Такие простые вещи, а сделаны так сложно, да и на том же Pimple, такое реализуется куда лучше <pre class="sh_sourceCode" rel="php"> <span class="sh_variable">$container</span><span class="sh_symbol">[</span><span class="sh_string">'transport_chain'</span><span class="sh_symbol">] =</span> <span class="sh_function">function</span> <span class="sh_symbol">(</span>container<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span> <span class="sh_variable">$transportChain</span> <span class="sh_symbol">=</span> <span class="sh_keyword">new</span> TransportChain<span class="sh_symbol">;</span> <span class="sh_variable">$transportChain</span><span class="sh_symbol">-></span><span class="sh_function">addTransport</span><span class="sh_symbol">(</span><span class="sh_variable">$container</span><span class="sh_symbol">[</span><span class="sh_string">'transport_sendmail'</span><span class="sh_symbol">]);</span> <span class="sh_variable">$transportChain</span><span class="sh_symbol">-></span><span class="sh_function">addTransport</span><span class="sh_symbol">(</span><span class="sh_variable">$container</span><span class="sh_symbol">[</span><span class="sh_string">'transport_smtp'</span><span class="sh_symbol">]);</span>
<span class="sh_control">return</span> <span class="sh_variable">$transportChain</span><span class="sh_symbol">;</span> <span class="sh_cbracket">}</span><span class="sh_symbol">;</span> </pre> если конечно я правильно понимая работу самого Pimple и тэгов в Symfony Di, хотя может и пример они выбрали неудачный
Немного не верно теги это так сказать способ описать несколько зависимостей отчасти то что ты показал как в pimple скорее будет выглядеть так ( это скорее псевдокод )