[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обсуждения DI
Страницы: 1, 2, 3, 4
Arh
$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 =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Цитата (Arh @ 25.10.2015 - 19:22)
Я не понял как этот код работает

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

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

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

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

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

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
$cont->injection('dependence', 'service');

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


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

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


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Нет. Контейнер сам её сделает. Новую функцию.

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.