Контейнер Laravel и крепления - PullRequest
0 голосов
/ 18 мая 2018

Документация Laravel 5.6 говорит:

Нет необходимости связывать классы в контейнер, если они не зависят от каких-либо интерфейсов.Контейнеру не нужно инструктировать, как создавать эти объекты, поскольку он может автоматически разрешать эти объекты с помощью отражения.

Я не понимаю этого.

Означает ли эточто мне не нужно использовать какие-либо привязки внутри метода регистра провайдера, если я не использую интерфейсы?

Тогда, как я могу использовать внедрение зависимостей, если я не использую bindigs?

PS: в моем понимании:

"interface" - это this

"bindings" - это bind () и singelton () внутри регистра

1 Ответ

0 голосов
/ 18 мая 2018

Если у вас есть:

class Something {

}

Вы можете сделать app()->make(Something::class) без необходимости связывать его перед рукой.Контейнер знает, что он может просто вызвать конструктор по умолчанию.

То же самое относится к

class SomethingElse {
       public function __construct(Something $s) { }
}   

В этом случае конструктор также будет проходить внедрение зависимости.Все это автоматически обрабатывается контейнером.

Однако это явно не может работать для интерфейсов, поскольку интерфейсы не могут быть построены.

Также, если вам нужно, чтобы что-то было привязано как одноэлементное, вам необходимо явно связать это, используя app()->singleton(...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...