Какой предпочтенный способ соединить использование зависимостей проводом контейнер МОК?

<?php

$number = '11545';
$locale = 'en_US';
$format = numfmt_create($locale, NumberFormatter::SPELLOUT);
$in_words = numfmt_format($format, $number);

print_r($in_words);
// eleven thousand five hundred forty-five

?>
5
задан Jon Seigel 18 May 2010 в 02:57
поделиться

3 ответа

Эти плюсы и минусы основаны на моей работе с пружиной. Для других контейнеров он может немного отличаться. грамм. Binsor, Fluent interfaces)

  • Менее подробный, чем XML (например, вам не нужно всегда указывать полное имя сборки (при разговоре .net))
  • con

    • подключение через код может привести к сложному подключению
    • жесткие зависимости контейнера IOC в кодовой базе

    Я использую смесь XML + Annotation. Некоторые вещи, особенно касающиеся доступа к базе данных, всегда настраиваются через xml, тогда как такие вещи, как контроллеры или службы, в основном настраиваются с помощью аннотаций в коде.

    [РЕДАКТИРОВАТЬ: Я позаимствовал PRO кода Маушса]

    3
    ответ дан 14 December 2019 в 13:45
    поделиться

    Плюсы XML:

    • Может изменять проводку и параметры без перекомпиляции. Иногда это удобно при переключении среды (например, вы можете переключить поддельного отправителя электронной почты, используемого в разработке, на настоящего отправителя электронной почты в производственной среде).

    Плюсы кода:

    • Можно использовать языки со строгой типизацией (например, C #, Java)
    • Некоторая проверка во время компиляции (хотя не может статически проверять зависимости)
    • Возможность рефакторинга с использованием обычных инструментов рефакторинга.
    • Может использовать преимущества DSL (например, Binsor, интерфейсы Fluent)
    • Менее подробный, чем XML (например, вам не нужно всегда указывать полное имя сборки (при использовании .net))
    2
    ответ дан 14 December 2019 в 13:45
    поделиться

    Я предполагаю, что под «регистрацией зависимостей в коде» вы подразумеваете «использовать новый».

    «новый» - чрезвычайно мощный фреймворк для внедрения зависимостей. Это позволяет вам «внедрять» ваши «зависимости» во время создания объекта - что означает отсутствие забытых параметров или наполовину построенных объектов.

    Другое важное потенциальное преимущество заключается в том, что вы используете инструменты рефакторинга (скажем, в Resharper или IntelliJ), вызовы нового изменения тоже

    В противном случае вы можете использовать некоторую чепуху XML и выполнить рефакторинг с XSL.

    0
    ответ дан 14 December 2019 в 13:45
    поделиться