# ДоХтор (26.11.2016 / 18:20)
L!MP, Значит я верно думал, что подобного рода ошибки можно обработать, предотвратив завершение скрипта провалом?
PS: Я уже начинаю путаться, гг
Да, но именно исключение есть только в РНР 7, в версиях ниже нужно мучатся с трэйсом или как-то ещё.
# L!MP (26.11.2016 / 16:39)
Дело в том, что если передаваемые аргументы не соответствуют сигнатуре функции/метода, то это исключительная ситуация (иначе зачем разработчик указывал бы хинт для аргумента) при возникновении которой
Абсолютно верно

Если к примеру убрать типизацию, убрать проверку интерфейсов и т.д., в большинстве случаев все будет работать и без этого. Уже отлаженный скрипт не упадет.
Но вот при дальнейшей разработке, да и особенно при изначальной разработке, жесткая типизация с отловом исключений, позволит избежать многих ошибок.
---
Особенно нужна типизация при сильной абстракции, когда одну часть кода пишет одна команда, а плагины или что-то еще, другая. Тут уже есть четкие "рельсы" которые не позволят напороть какую-то ересь.
я вчера выпил вина, хотелось блеснуть..
Вопрос тем кто активно юзает DI и различные библиотеки, будь-то собственные или нет.
Вот в некоторых контейнерах (и, может быть, сервис локаторах) есть такой функционал как тэги и родительский контейнер.
Кто-нибудь таким добром пользуется и, если да, то для чего?
Я вот вижу что такой функционал часто присутствует, но сам я как-то и разу ни тем, ни другим не пользовался.
L!MP, про теги не слышал, а родительский контейнер что то прикладное я считаю. У нас, к примеру, есть контейнер приложения, и несколько контейнеров прикладных объектов, таких как контроллеры. Есть еще контейнеры плагинов, они нужны для конкретных классов, которым необходимы специализированные объекты, на пример для шаблонизатора есть контейнер хелперов.
# L!MP (29.11.2016 / 18:04)
Вопрос тем кто активно юзает DI и различные библиотеки, будь-то собственные или нет.
Вот в некоторых контейнерах (и, может быть, сервис локаторах) есть такой функционал как тэги и родительский контей
Про "тэги" тоже не слышал. Может в конкретном продукте под именем "тэги" подразумевают обращение к абстрактной фабрике?
Ибо на деле чем-то похоже...
Тэги это вот как-то так:
https://laravel.com/docs/5.3/c ... gging
А родительский контейнер, это когда один контейнер передается в другой и так далее, потом когда идёт вызов биндинга из контейнер он начинает его искать с начала у себя, а если не находит, передаёт поиск вверх по иерархии.
# L!MP (29.11.2016 / 19:14)
Тэги это вот как-то так: https://laravel.com/docs/5.3/c ... gging
Ааа, теперь понял. Это у них что-то типа группировки. чтоб потом можно было дернуть все сервисы одним вызовом.
Нет, тегами в этом смысле я не пользуюсь. Контейнер всегда возвращает мне конкретный сервис, а не их коллекцию, да и зачем может быть нужна коллекция сервисов? Можно ведь сразу в контейнер поместить агрегат сервисов и работать с ним.
По поводу родительского и дочернего контейнеров не могу представить прикладное применение этого. Не сталкивался на практике с подобным, но это легко реализуемо для любого контейнера с абстрактными фабриками.