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

likemusic +1

Вступил в наши ряды: 24 января 2014

Замечен в последний раз: 29 июня 2019

Оставил на форуме: 21 сообщение и 2 темы

Последнее сообщение: 11 июля 2016

Вы сможете отправить письмо, если войдёте

Комментарии (2)

likemusic

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

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

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

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

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

likemusic

Обновление 08.10.2014

Тейлор удалил собственный код для импорта .env-файла и начиная с версии 5 для этого будет использоваться библиотека Ванс Лукаса PHP dotenv.