В последнее время отмечаю для себя популярность фреймворка Laravel. Поскольку веб-разработка находится в сфере моих бизнес-интересов, решил посмотреть, как это устроено. И, читая документацию, во всех примерах вижу использование статических методов. Контроллеры, формы, модели - везде статика, то есть, мягко говоря, к ООП это не имеет отношения. Может, я просто не там смотрю, поправьте меня, пожалуйста, знатоки данного фреймворка.
Laravel предоставляет возможность использовать именно dependency injection, а не фасады. Причем это рекомендуемый подход. Так что использовать статические методы не обязательно. В документации же все это описано для того, что бы разработчики быстрее начали клепать сайтики и т.д. не заморачиваясь штуками типа dependency inversion. Ну и может так исторически сложилось, я на Laravel не писал ничего, мне Silex/Symfony хватает. Но писать на Laravel нормально возможно.
Хочу ссылку на конкретные примеры использования DI. Я честно признаюсь, в отличии от Yii, здесь я код не смотрел. С тем, что Yii - костыльная штука, я согласен.
Про этот фраэмворк впервые слышу, но все-же чем Вас смущает статика ? Сейчас почти все современные фраэмворки используют статику, а все для того чтобы можно было к любым нужным методам или свойствам обратиться с любого места.
Простой пример где это выгодно. Авторизация пользователя. Вот вам в каком-то виде нужно вызвать логин пользователя. Целую модель передавать или вызывать новую функцию, которая по новой сделает запрос в базу не вариант, дорого. А так мы при авторизации данные достали, в синголтон положили и бери не хочу в любом месте проекта, без лишний запросов.
@nepster09, я не знаю о каких вы фреймворках говорите, скорее всего о штуках типа yii, использующий по всему приложению сингелтон.
Проблема статических методов в том (в контексте php) что вам приходится в коде использовать определенный класс, и таким образом вы уже делаете ваш класс зависимым от какого-то другого. В фреймворках типа yii обычно все это превращается в очень сильно связанную систему. Да, опять же проблем для тестирования это не составляет (все же фасады/сингелтон yii используются как сервис локатор скорее, так что сервисы можно мокать), но все же при поддержке проекта иногда мешает.
Статика используется как фасады. Использовать его очень просто и удобно. Но согласен, что если руки будут кривые, то можно такого наделать... хотя это возможно и в любом фреймворке...