Может войдёшь?
Черновики Написать статью Профиль

Статьи Lapshin_Kirill

Hello world, I am Laravel (5)

перевод Hello World


Примечание переводчика
Я новичок в PHP, но при этом очень давно и серьезно занимаюсь разработкой баз данных — на «low level» (только хардкор, только SQL)
Много проектов реализуются по шаблону проектирования —"глупый GUI" в силу разных причин (Например — интерфейс пишет субподряд, и требуется гибкость системы без изменения кода приложения).
Настал момент когда я решил — пора попробовать перейти на «светлую» сторону!
Лара — это то, что должно мне помочь сделать это легко и перестать наконец писать всё на SQL!!!111

likemusic

(Странно, но по моему мнению мы опять получили сверхсвязанные классы. Ведь сколько методов используют принудительно указанный тип параметра, в стольких местах и понадобится переименование — разве нет? Примечание переводчика)

По-моему, тут просто не очень удачный пример в коде, т.к. объект класса Responce используется в большинстве методов контроллера UsersController. Внедрение через методы удобно использовать когда метод использует объект не используемый в большинстве других методов. Например, если в контроллере пользователей UsersController есть метод для приглашения на сайт по e-mail другого пользователя inviteByEmail(), который работает через объект реализующий интерфейс IMailer:

class UsersController extends BaseController
{
    public function inviteByEmail(IMailer $mailer)
    {
        return $mailer->send('Join us!');
    }
}

Класс реализующий интерфейс IMailer может работать через сторонний сервис, для инициализации работы с которым в конструкторе класса может происходить долгая авторизация на сервисе и т.д, что нет смысла делать, при вызове всех других методов класса UsersController.

Т.е. если интерфейс используется в большинстве методов класса, то лучше использовать внедрение через конструктор. Если только в нескольких методах, то лучше делать его внедрение через метод.

← Назад | Дальше → Движется на Habravel