Я пытаюсь сделать мой код максимально тестируемым, что означает правильное использование внедрения зависимостей.
Я прочитал, что можно использовать new () для создания экземпляра объекта, если этот объект соответствует определенным критериям .Примечательно, что он не должен принимать «non newable» в своем конструкторе.
Например, я должен иметь возможность перейти на
new Form('signup');
, потому что мой контейнер DI никак не узнаеткак создать форму «регистрации» заблаговременно.
Я могу сделать эту работу большую часть времени, но теперь я бы хотел, чтобы форма могла себя проверять, используя сторонний валидатор, например:
$form->validate()->isValid();
... это означает, что мне нужно будет передать службу валидатора.
Я бы действительно предпочел включить валидатор уже, потому что в большинстве случаев форманужно будет проверить, и мне придется пройти через дополнительную работу, чтобы установить валидатор самостоятельно.
Это нормально, в данном случае сделать:
new Form(Validator $validator,$name);