Как я должен заказать свои ctor параметры для DI/МОК?

Вы можете написать функцию, которая справится с этим любым удобным вам способом. Почему бы и нет?

function fval($f, $precision = 9) { 
    return number_format($f, $precision); 
}

Тогда в любом месте, которое вам нужно отформатировать, выкрикивайте это:

$f = 3.485E-5;
echo fval($f);  // this will print: 0.000003485
5
задан Matt Hamilton 1 October 2008 в 04:57
поделиться

3 ответа

Я не соглашаюсь с ответом @aku.

Я думаю, что Вы делаете, прекрасен и существуют также другие способы сделать это, которые являются не более или менее правильными. Например, можно подвергнуть сомнению, должен ли этот объект быть в зависимости от сервисов во-первых.

Независимо от DI я чувствую, что полезно разъяснить в Вашем уме, по крайней мере, вид состояния, которое каждый объект содержит, такие как реальное состояние (Порядок), полученное состояние (если таковые имеются), и зависимости (сервисы):

http://tech.puredanger.com/2007/09/18/spelunking/

На любом конструкторе или методе, я предпочитаю, чтобы реальные данные были переданы сначала и зависимости или внешний материал, который будет передан в последний раз. Таким образом в Вашем примере я предпочел бы первое.

4
ответ дан 13 December 2019 в 05:44
поделиться

Я чувствую себя немного беспокоящимся о разрешении экземпляра OrderForm быть инстанцированным без необходимой ссылки на экземпляр Порядка. Одна причина могла бы состоять в том, что это будет препятствовать тому, чтобы я делал заранее проверку пустые заказы. Дальнейшие мысли?

Я предполагаю, что мог взять некоторый комфорт в знании, что объекты OrderForm только инстанцирует Метод фабрики, который гарантирует, что свойство Order установлено после совершения звонка к платформе МОК.

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

Матовый, Вы не должны смешивать нормальные параметры с зависимостями. Так как Ваш объект будет создан во внутренностях контейнера МОК, как Вы собираетесь указать необходимые аргументы?

Смешивание зависимости и нормальных аргументов сделает логику Вашей программы более сложной.

В этом случае это было бы лучше объявить свойства зависимости (т.е. удалить зависимости от конструктора) или инициализировало бы поле порядка после того, как МОК создал OrderForm и разрешил, что это - зависимости (т.е. удалите нормальные параметры от конструктора).

Также можно объявить все параметры, включая порядок как зависимости.

5
ответ дан 13 December 2019 в 05:44
поделиться