Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (8) 1 [2] 3 4 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Мой DI контейнер
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




Короче почитал документацию про тэги, какая то дичь, серьезно. Такие простые вещи, а сделаны так сложно, да и на том же Pimple, такое реализуется куда лучше

$container['transport_chain'] = function (container) {
$transportChain = new TransportChain;
$transportChain->addTransport($container['transport_sendmail']);
$transportChain->addTransport($container['transport_smtp']);

return $transportChain;
};

если конечно я правильно понимая работу самого Pimple и тэгов в Symfony Di, хотя может и пример они выбрали неудачный


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1044
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 28 дней
Карма: 13




Это. А ты в курсе, что во фреймворке Slim используется Pimple?

И да, нужен лайтовый пример, лучше всего сразу много и классы чтобы привязаны были к жизни, а не ExampleA и т.д. От таких названий в глазах рябит, они все выглядят одинаково при беглом взгляде. Приходится вчитываться и ваще такой пример читать безумно трудно.

Цитата (chee @ 26.03.2016 - 12:03)
который будет строить ООП систему в качестве обучения, при этом система должна будет строиться на основе какого-то DI контейнера.

Зачем тебе такой гемор? Лучше бы дал тот же Pimple по нему документация есть раз, и второе - сообществу о нем хорошо известно. Можно задавать вопросы на форумах, гуглить и т.д.

Так получилось, что ты гемор себе обрел. Все вопросы к тебе. И по доке и по всему.

Да ты б хоть UML диаграммку что ли чирканул, раз для обучения-то! wink.gif



--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




Цитата (Ron @ 11.04.2016 - 22:33)
А ты в курсе, что во фреймворке Slim используется Pimple?

И, что?
Цитата (Ron @ 11.04.2016 - 22:33)
И да, нужен лайтовый пример, лучше всего сразу много и классы чтобы привязаны были к жизни, а не ExampleA и т.д. От таких названий в глазах рябит, они все выглядят одинаково при беглом взгляде. Приходится вчитываться и ваще такой пример читать безумно трудно.

Мне нужно было показать как работает контейнераи типичные сценарии его использования, то что тебе не нравится название классов, что поделаешь, на вкус и цвет ...

На счет живого примера, пожалуйста:
Инициализация, хотя тут другой немного вариант этого контейнера
Описание зависимостей в проекте

Цитата (Ron @ 11.04.2016 - 22:33)
Зачем тебе такой гемор? Лучше бы дал тот же Pimple по нему документация есть раз, и второе - сообществу о нем хорошо известно. Можно задавать вопросы на форумах, гуглить и т.д.

боже мой, это тупо контейнеры зависимостей, какие по ним могут быть вопросы? Ты все переусложняешь. Это же не Symfony DI с кучей всяких свистелок.



Цитата (Ron @ 11.04.2016 - 22:33)
Так получилось, что ты гемор себе обрел. Все вопросы к тебе. И по доке и по всему.

Да ты б хоть UML диаграммку что ли чирканул, раз для обучения-то

Какой гемор? Ты о чём? Некоторые замечание годные, некоторые просто дело вкуса. Какую UML диаграмку? Тут класс на 100 строк, с одной обязанностью - управлять зависимостями.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1044
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 28 дней
Карма: 13




chee, так чего я получу-то? Что описывается в метадате? У меня объект mysqlwrapper зависит от объекта config. Я хочу чтобы мне mysqlwrapper прилетел подготовленный, с проинжекченным в его конструктор объектом config. Как этого добиться?

Что я получу после вот этого вызова? $this->getContainer()->get('ExampleCMS\\Application');
Коллекцию обектв, описанных через array метадаты?

Я вот честно не понимаю как это всё юзать. Pimple открыл, сразу всё понятно. Здесь мне придется копать (трейсить) твой код. А я желанием не горю. =)


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




Цитата (Ron @ 12.04.2016 - 00:39)
chee, так чего я получу-то? Что описывается в метадате? У меня объект mysqlwrapper зависит от объекта config.


namespace Ron;

class Config
{
}


class MysqlWrapper
{
public $config;
}

$container = new \Cheevauva\Container(array(
'Ron\MysqlWrapper' => array(
'config' => 'Ron\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.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1044
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 28 дней
Карма: 13




О боги, ты меня заставил-таки заглянуть в код. ))) Ок, я всё понял, только нафига выставлять зависимости в свойства? Конструктор ведь отработает уже к этому времени, а мне нужно, например, перед использованием чего-нибудь сделать с прилетевшей зависимостью. Ну я не знаю, дослать какие-нибудь флаги или конфиг. И вообще заполнить свои свойства из геттеров зависимости - ХЗ. =)

Или это у тебя через медиатор делается? Походу да. Ок, ясн понятн. )


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 13 дней


Цитата (Ron @ 11.04.2016 - 22:13)
О боги, ты меня заставил-таки заглянуть в код. )))

Никогда мне вас, оопэшников, не понять.... Три дня расуждать о том, чего даже не видел. smile.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1044
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 28 дней
Карма: 13




Цитата (twin @ 12.04.2016 - 02:45)
Никогда мне вас, оопэшников, не понять.... Три дня расуждать о том, чего даже не видел.

И? Что? =) Зачем мне смотреть в чужой код? Описания преимуществ и хорошей доки по использованию более чем достаточно. =)


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 13 дней


Я бы от любопытства помер. smile.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 13 дней


chee
Не врубаюсь, а как второй объект получить? Снова в другой контейнер прописывать?


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




twin, второй обьект будет в свойстве $config первого.

Ron, видимо твоя проблема была в том что ты думал об этом контейнере как о pimple, проецировал его методы работы на это решение. Для таких случаев доки не сработают wink.gif


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1044
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 28 дней
Карма: 13




Цитата (chee @ 12.04.2016 - 10:10)
Для таких случаев доки не сработают wink.gif

Вот как раз для таких случаев дока и нужна. =) Причем лучше всего с описанием алгоритма. Ну это может быть и лишнее, вполне достаточно хорошего примера с комментариями.


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




Ron, концепция описана в readme на гите, у меня такое ощущение что ты ее не читал.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 13 дней


Цитата (chee @ 12.04.2016 - 06:10)
второй обьект будет в свойстве $config первого.

Не догоняю. Покажи на примере плиз.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 18 дней
Карма: 111




Цитата (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 скорее будет выглядеть так ( это скорее псевдокод )



$container['service'] = function(Container $container) {

$service = new MySerice();

foreach($container->getTags('service.transport') as $tag){
$service->addTransport($tag);
}

return $service;

]


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

в симфони например через DI так описываются кастомные поля формы, да и много чего)

ps чето сломался форум после цитирования =(

Это сообщение отредактировал bestxp - 12.04.2016 - 10:54


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (8) 1 [2] 3 4 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса