|
Заблокирован
|
|||||||||||||||||||||
Суть DI в чём?05.06.2020, 12:25. Показов 5609. Ответов 43
index.php
1. Зачем вся эта муть, почему нельзя сделать так: index.php
2. Я правильно понимаю, что у меня в $di->container будет массив СРАЗУ ВСЕХ объектов приложения, то есть они СРАЗУ УЖЕ СОЗДАНЫ, зачем мне куча УЖЕ СОЗДАННЫХ экземпляров, а не создание по мере обращения? Или я что-то не понимаю - это же так называемый РЕЕСТР.
0
|
|||||||||||||||||||||
| 05.06.2020, 12:25 | |
|
Ответы с готовыми решениями:
43
В чем суть Invalid Parameter |
|
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
|
||||||
| 05.06.2020, 15:36 | ||||||
|
Не совсем понятно в чем отличие первого куска кода от второго.
Откуда можно знать что там находится в контейнере. Вообще, конечно, там должны быть не все экземпляры, а только те, которые ты запросил. Например:
0
|
||||||
|
Заблокирован
|
||||||||
| 05.06.2020, 15:47 [ТС] | ||||||||
|
взяли реестр обозвали di
я нихера не понял, зачем мне $di->container с массивом экземпляров ВСЕХ классов? что это за чудо взяли РЕЕСТР переименовали в DI? так я и сто лет назад так умел прописать неймспейсы и магией обращаться по ключу к массиву УЖЕ СОЗДАННЫХ экземпляров, которые постоянно висят в любой области видимости у меня и init() тут зачем объект инициализируется при создании по new ведь?
0
|
||||||||
|
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
|
|
| 05.06.2020, 15:54 | |
|
Я вот что-то тоже в упор не вижу где там $di->container.
Я не знаю кто и какой реестр переименовал, но инъекция зависимостей всегда ей и была, если под di автор подразумевает ее. По идее в атолоаде должно быть автоподключение классов.
0
|
|
|
Заблокирован
|
||
| 05.06.2020, 15:59 [ТС] | ||
|
я чёт не догоняю
0
|
||
|
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
|
|
| 05.06.2020, 16:02 | |
|
А что находится в \engine\service\router\Provider?
0
|
|
|
Заблокирован
|
|||||||
| 05.06.2020, 16:05 [ТС] | |||||||
|
MadHatter, как я суть задумки понял автора этого кода, что в цикле мы перебирать ДОЛЖНЫ ТОЛЬКО неймспейсы и создавать объект, только если в роуте есть его ключ, но я чёт не нахожу такую проверку, ну типа если в роуте ключ, то создаём объект, я вижу что он в цикле дубасит всем классам по экземпляру
![]() это я на ютюбе попробовал изучить DI - там есть курс CMS на PHP Добавлено через 2 минуты тогда не понимаю
0
|
|||||||
|
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
|
|
| 05.06.2020, 16:08 | |
|
Ну надо копаться и смотреть. Вообще инъекция зависимостей это очень просто и удобно. ТЫ просто указываешь экземпляр какого класса тебе нужен в данном методе и фреймворк создает его вместо тебя.
0
|
|
|
Заблокирован
|
|
| 05.06.2020, 16:12 [ТС] | |
|
MadHatter, не ну я то примерно понимаю как должно работать, но то, что я дал в примере я так понимаю это не совсем DI - мне лично это полностью напомнило реестр, там постоянно уже готовые экземпляры висят и магия к ним доступ даёт по ключу
0
|
|
|
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
|
|
| 05.06.2020, 16:15 | |
|
Это похоже на сервис провайдер. Ты указываешь классы которые должны выполниться при инициализации приложения. Например автоматически подтянуть курсы валют с сайта нацбанка или погоду из метеосервиса.
0
|
|
|
Заблокирован
|
||||||||||||||||||||||||||
| 06.06.2020, 18:04 [ТС] | ||||||||||||||||||||||||||
|
MadHatter, короче - ЭТО РЕЕСТР, дичь ещё та, все объекты созданы которые в конфиге неймспейсов и постоянно хранятся в conteiner, вот я создал несколько сервисов
выхлоп
0
|
||||||||||||||||||||||||||
|
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
|||||||||||||||||||||||||||||||
| 06.06.2020, 19:57 | |||||||||||||||||||||||||||||||
|
Verolomstvo, Смысл DI в создании объектов по требованию, причем у объекта могут быть зависимости, подобно comroser или npm. К примеру
В контейнере мы сопоставляем интерфейс, и создаем подключение к БД. Причем он устроен таким образом, что он сам автоматически парсит конструкторы и создает необходимые объекты.
Остается только создать сам контроллер через контейнер зависимостей. Добавлено через 15 минут
1
|
|||||||||||||||||||||||||||||||
|
Заблокирован
|
|
| 06.06.2020, 20:05 [ТС] | |
|
sad67man, не вижу я создания по требованию вижу цикл по массиву неймспейсов
![]() для чего тогда массив-контейнер не для хранения ли кучи уже созданных объектов? я по мере надобности как минимум двумя способами и так могу обратиться к объекту получат один и тот же объект? а если я сам залогинен через сервис User и просматриваю профиль другого пользователя, какие мне данные отдаст сервис User, если объект уже создан ДЛЯ МЕНЯ? короче куча вопросов и я уже понял что мне такая дичь не нужна, я такое проходил с реестром
0
|
|
|
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
|
| 06.06.2020, 20:10 | |
|
Verolomstvo, Контейнер хранит ключ и значение - значение может быть как функция, которая создает класс, так и имя класса - факторки. Т.е. по сути конейнер изначально хранит просто массив имен классов. И по требованию их дергает, сохраняя объекты в приватном массиве - я вам кидал ссылку, но вы не удосужились посмотреть.
сервис UserService необходим только для выполнения операций, просматривание данных к нему не относится.
1
|
|
|
Заблокирован
|
||||||
| 06.06.2020, 20:11 [ТС] | ||||||
|
sad67man, тут не имена классов, тут объекты
0
|
||||||
|
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
||||||
| 06.06.2020, 20:17 | ||||||
|
Verolomstvo, Я не знаю, какую статью вы читали, или какое видео смотрели. Контейнер чисто теоретически может создавать весь набор объектов сразу. Но это слишком примитивный вариант. Есть и более продвинутые реализации, когда контейнер просто хранит массив названия классов и названия классов факторок, которые внитри содержат логику создания объектов. Но пока их не дернули они представляют собой лишь строки.
1
|
||||||
|
Заблокирован
|
||
| 06.06.2020, 20:20 [ТС] | ||
![]() пришёл айдишник другого юзера нужно дёрнуть данные на другого юзера, находясь у себя в аккаунте И ОДНОВРЕМЕННО чтобы шаблон (хотя бы шаблон) с моими показателями не исказился данными противника ![]() терзаю в бою другого юзера: мне себе и ему нужно сбивать хп, отнимать у него бабло при победах, писать ему количество его поражений, считать ему рейтинг в зависимости от побед-поражений, регенерировать ему хп, чтобы когда убил, то он не оставался недоступным для боёв и так далее и тому подобное - это будет делать один экземпляр сервиса сразу для меня и для него? А есть ещё групповые бои например 5 на 5 ![]() Добавлено через 1 минуту sad67man, там нудные видосы мне не заходят они несколько раз смотрел я эти видосы давно знаю
0
|
||
|
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
||
| 06.06.2020, 20:25 | ||
Сообщение было отмечено Verolomstvo как решение
Решение
Verolomstvo, Сущность User отвечает главным образом за регистрацию, вход, восстановление пароля и т.д. Для ваших вещей нужно создать отдельную сущность Player.
Когда вы выполняете операцию - вы дергаете операционный уровень, просто изменяете состояние системы. Для получения данных для вывода нужен отдельная служба. Добавлено через 1 минуту
1
|
||
|
Заблокирован
|
|
| 06.06.2020, 20:35 [ТС] | |
|
0
|
|
|
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
|
| 06.06.2020, 20:41 | |
|
Verolomstvo, В DI контейнере не нужно описывать все возможные классы. Там описываются только интерфейсы, и те объекты, которые требуют настройки в качестве параметров в конструкторе. В остальном Контейнер сам парсит через Рефлексию конструкторы и пытается создать все необходимые объекты.
0
|
|
| 06.06.2020, 20:41 | |
|
Помогаю со студенческими работами здесь
20
В чём суть ошибки? Warning: Parameter 3 to showBlogSection() expected to be a reference, value given in on line 100 В чём суть сборки? В чем суть continue в if-else
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|