я понимаю что правильнее делать интерфейс, потом в DI создавать элемент ClassInterface::class и уже в function создавать инстанс реализации, насколько это вообще надо так упарываться, ведь можно сделать допущение что никто не будет писать свою реализацию и тогда я могу просто сразу сделать одну дефолтную реализацию и сразу в DI ее сделать как Class::class и использовать, всегда остается возможность переопределить элемент в DI и повесить свою реализацию вместо той что в Class:class или даже свой элемент добавить и использовать у себя его?
интерфейс планируется там где есть точка расширения, а в остальном ничто не мешает прямо указывать зависимости.
вот и я думаю, что я сильно усложняю создавая ненужные интерфейсы, в моем случае я думаю про то что можно будет легко подменить одну реализацию другой, хотя тут же подумал дак можно и в DI переопределить элемент и тем самым поменять реализацию )
если это будет наследник, ага. Есть же тайпхинты пхпшные, они не дадут че попало засунуть.
это откуда такое правило?)
из здравого смысла
а если ты хочешь всё приложение покрывать юнит-тестами?
и что мне помешает?
что такое юнит-тесты? ))
ну проще всего создавать интерфейсы на зависимости, из них генерировать моки и потом тестировать
Обсуждают сегодня