Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
Заблокирован

Суть DI в чём?

05.06.2020, 12:25. Показов 6132. Ответов 43
Метки php (Все метки)

Студворк — интернет-сервис помощи студентам
index.php
PHP
1
2
<?php
require_once 'engine/bootstrap.php';
service.php
PHP
1
2
3
4
<?php
return [
    \engine\service\router\Provider::class
];
bootstrap.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
 
use engine\Cms;
use engine\di\Di;
 
try {
    $di = new Di();
    $services = require_once 'config/service.php';
    foreach ($services as $service) {
        $provider = new $service($di);
        $provider->init();
    }
    $cms = new Cms($di);
    $cms->run();
} catch (Error $error) {
    echo $error->getMessage();
}
Теперь вопросы:

1. Зачем вся эта муть, почему нельзя сделать так:
index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// require_once dirname(__DIR__) . '/vendor/autoload.php'; // удалено - ЗАЧЕМ ЭТО ТУТ!!!???
 
use engine\Cms;
use engine\di\Di;
 
try {
    $di = new Di(); // внутри заполняем container
    $services = require_once 'config/service.php';
    foreach ($services as $service) {
        $provider = new $service($di); // СРАЗУ СОЗДАЁМ ОБЪЕКТ(Ы) И ПИХАЕМ В ТОЧКУ ДОСТУПА!!!???
        $provider->init();
    }
    $cms = new Cms($di);
    $cms->run();
} catch (Error $error) {
    echo $error->getMessage();
}
И всё.

2. Я правильно понимаю, что у меня в $di->container будет массив СРАЗУ ВСЕХ объектов приложения, то есть они СРАЗУ УЖЕ СОЗДАНЫ, зачем мне куча УЖЕ СОЗДАННЫХ экземпляров, а не создание по мере обращения? Или я что-то не понимаю - это же так называемый РЕЕСТР.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.06.2020, 12:25
Ответы с готовыми решениями:

В чем суть интерфейсов?
За день я в интернете начиталась столько всего про интерфейсы, что запуталась до нельзя!!! И так, звучит главный вопрос: в чем же суть...

В чем суть PHP?
Ребят, подскажите пожалуйста правильно ли я понял суть PHP. Вот лежит на сервере код определенный. Мы обращаемся по домену и этот код...

В чем суть Invalid Parameter
Invalid Parameter – yii\base\InvalidParamException Hash is invalid. Добавлено через 27 минут вот код куда ругается in...

43
Заблокирован
12.06.2020, 00:52  [ТС]
Студворк — интернет-сервис помощи студентам
sad67man, вот поэтому я и думаю, что мне это не надо

другой тип мышления у меня, мне по классике легче написать, чем шаблонами
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
12.06.2020, 19:28
Цитата Сообщение от sad67man Посмотреть сообщение
Di контейнер как раз заменяет антипатерн Синглтон
А внутри он тип не синглтоны держит...
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
12.06.2020, 19:47
crautcher, Если рассматривать паттерн синглтон как класс со статическим методом getInstance(). То нет. С другой стороны он является его аналогом, но при этом это более гибкий вариант. Делая классы более чистыми. Тут не нужно придираться к словам, главное суть - что если он является аналогом, то реализовывать сам DI контейнер через Синглтоны - это какой-то абсурд, вот это я к чему. Тогда теряется смысл контейнера, если он внутри себя дергает те же Синглтоны с методами getInstance()
0
Заблокирован
14.06.2020, 11:57  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Нет..
посмотрел сотый раз видос тот по ссылке, там то же самое делается: методом get создаётся объект namespace::class

короче я всё правильно понял, в моём архиве в посте 39 может быть кому-то и непонятное, но правильное решение ну или, если так можно сказать, одно из решений
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2020, 11:57

В чём суть ошибки? Warning: Parameter 3 to showBlogSection() expected to be a reference, value given in on line 100
Здравствуйте. Не могу понять в чем суть ошибки Warning: Parameter 3 to showBlogSection() expected to be a reference, value given in on line...

В чём суть сборки?
Здравствуйте. Я верю, что тут действительно есть знатоки компьютерного железа и я обращаюсь к вам. Я сам как бы начинающий IT-шник и учусь...

В чем суть continue в if-else
код первый. прата глава 7 упражнение 3. оператор continue отсутствует, все прекрасно работает. счетчик вынесен в отдельный оператор ?: 1...

В чем суть операторов << и >>
Здравствуйте. Уважаемые Форумчане, нужна помощь. Имеется следующий код if ((PINB&amp;(1 &lt;&lt; PB0)) == 0) // Если на выводе...

Интерфейсы - в чем их суть
В чем суть интерфейсов объясните пожалуйста. Добавлено через 19 минут А если быть точнее, то какова их практическая полезность?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru