Начал изучать DI-контейнеры, мне очень нравится реализация Pimple
(готов также рассмотреть примеры на symfony DI).
Вопрос первый, комплексный:
Должен ли DI контейнер быть глобальным для проекта? Т.е. при разработке приложения, в одном месте я помещаю и туда сервисы и конфигурирую их, а в другим местах приложения (других файлах) получаю эти сервисы?
Как это делается? В рахных файлах (классах) я могу добавлять сервисы в контейнер ? Тогда возможны случаи, когда при попытке получить сервис, его не окажется.. Т.е. вызов сервиса до объявления. Как быть с этим?
Или лучше в одном месте добавлять все сервисы и зависимости? Как это делают другие?
Добавлять все сервисы и зависимости следует в одном месте. В объектно-ориентированном приложении не должно быть ни глобальных переменных, ни синглтона. Этого сложно избежать, и проще всего скатиться по простой дорожке к синглтону. Но это приведет к проблемам в будущем. Есть два подхода. Это либо явное объявление всех классов с их зависимостями, как это принято в Симфони 3.хх, либо магия - рефлекшен похуже, аннотации получше, но тоже так себе.
То есть, когда мы просим систему создать новый объект, у нас уже есть информация о том, какие объекты ему понадобятся в качестве аргументов, и контейнер подставит инстансы требуемых сервисов.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
я новичок в PHPЯ знаю, что вопрос наверное глупый, но к сожалению информации настолько много, что я в ней потерялся
Есть код — создание штрих кодаКак сделать чтобы генерировались картинки в таблицу?
Есть очень интересная задачаЗанимаюсь сайтом доставки пиццы, где есть такое понятие как модификатор(допустим добавить колбасу)