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

> Обсуждения DI
Arh  
Дата
Цитировать сообщение

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



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 8 дней
Карма: 70




$newsFomDb = $dic->get('NewsFomDb');
$newsFomDb2 = $dic->get('NewsFomDb2');


Где это запускается?
От куда скрипт узнает что нужно использовать NewsFomDb2

Я не понял как этот код работает
$cont = new DiC;
// Создаем первый сервис
$cont->set('service',
function() {
return new Example1;
}
);
// Затем второй
$cont->set('dependence',
function() {
return new Example2;
}
);

// Запихиваем второй в первый, как зависимость через конструктор
$cont->injection('service', 'dependence');

// Вуаля.
$obj = $cont->get('service');
$obj->run();


Что вернёт $cont->get('service'); объект Example2 или Example1 или массив с тем и тем или что?

Цитата
Я бы еще по принадлежности назвал. Как там таблица называется. Как то SytemSettings или что-то в этом духе.

Тогда уж таблицу назвать library_settings =)


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

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



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

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

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


Цитата (Arh @ 25.10.2015 - 19:22)
Я не понял как этот код работает

Что именно не понятно... Если на твой класс перевести, то как то так:

$DI = new DI();
$DI->set('service', new Example2);
$DI->set('dependence', new Example1);

А дальше у тебя затык. Тебе чтобы один в другой вставить, нужно сначала их вытащить наружу. А IoC или DiC это должен делать сам. Ты должен только оперировать идентификаторами сервисов, а не их объектами.


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

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

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

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

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



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

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

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


Цитата (Arh @ 25.10.2015 - 19:22)
Что вернёт $cont->get('service'); объект Example2 или Example1 или массив с тем и тем или что?

    $cont->injection('service', 'dependence');
$obj = $cont->get('service');

Это будет равносильно такому:
$obj = new Example1(new Example2);


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

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

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

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

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



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

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

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


Изменил порядок аргументов. Так действительно не понятно было. Так понятнее будет:
    $cont->injection('dependence', 'service');
    $obj = $cont->get('service');
"Инъекция зависимости в сервис". А то "Инъекция в сервис зависимости" путано как то...


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

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

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

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

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



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 8 дней
Карма: 70




$cont->injection('dependence', 'service');

А как в dependence попадёт service, если ты там уже функции записал?
Куда именно инъекция сделается?


$cont->injection('dependence', 'service');

//Вот такая там логика чтоли?
$cont->set('dependence',
function($injectionName) use ($cont) {
return new Example($cont->get($injectionName));
}
);


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

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



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

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

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


Нет. Контейнер сам её сделает. Новую функцию.


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

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

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

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

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

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