А еще нубский вопрос. Чем плохо использовать функциональность сервисов через статические методы? Например: ProjectService::getBestProjectsByUser($user_id). Лучше ли через new ProjectService и ProjectService->getBestProjectByUser? Или с помощью DI в конструкторе? В чем преимущество включения сервиса с помощью DI, если не планируется биндить разные реализации этого сервиса...?
А еще нубский вопрос. Чем плохо использовать функциональность сервисов через статические методы? Например: ProjectService::getBestProjectsByUser($user_id). Лучше ли через new ProjectService и ProjectService->getBestProjectByUser? Или с помощью DI в конструкторе? В чем преимущество включения сервиса с помощью DI, если не планируется биндить разные реализации этого сервиса...?
Когда через DI сразу видно что вот этот класс юзает этот. И это реально важно в больших проектах.
Статические методы - не очень хорошая практика в принципе. Они убивают многие преимущества ООП и приближают его назад в прошлое к процедурной парадигме
Статические методы - не очень хорошая практика в принципе. Они убивают многие преимущества ООП и приближают его назад в прошлое к процедурной парадигме
А еще нубский вопрос. Чем плохо использовать функциональность сервисов через статические методы? Например: ProjectService::getBestProjectsByUser($user_id). Лучше ли через new ProjectService и ProjectService->getBestProjectByUser? Или с помощью DI в конструкторе? В чем преимущество включения сервиса с помощью DI, если не планируется биндить разные реализации этого сервиса...?
DI обеспечивает слабую связность. Слабая связность - это хорошо 😊
На уровне лозунгов я это понимаю, а вот на практике... :) В какой момент я расстроюсь из-за того, что использовал ProjectService::getBestProjectsByUser($user_id), мне пока не ясно)
И если, скажем, у меня может смениться источник каких-то данных, я, используя тот же интерфейс, сделаю bind другой реализации, и будет все хорошо. Так?