В чем разница между Laravel app-> make (ClassA) и новым ClassA () - PullRequest
0 голосов
/ 09 мая 2019

Мне нужно знать, в чем разница между следующими подходами, и каковы основные цели или характеристики каждого метода?

Было бы замечательно, если бы кто-нибудь мог научить меня этому или дать мне хорошееСсылка для подражания.

$class = app()->make(ClassA::class);

против

$class = new ClassA();

1 Ответ

3 голосов
/ 09 мая 2019

Это большой вопрос, и я не думаю, что это легко объяснить в ответе StackOverflow.

Но в заключение, первый подход использует так называемую технику внедрения зависимостей. В Laravel Service Container - это тот, который разрешает зависимости вокруг платформы. Так, например, если ваш класс зависит от других ресурсов, доступных во время выполнения, Service Container позаботится об их предоставлении.

А последнее - это простой объектный экземпляр, который вы делаете сами.

Например, ваш ClassA в конструкторе имеет зависимость от другого класса:

public function __construct(ClassB $classB) {}

Затем, используя первый подход, контейнер Service попытается разрешить ClassB для вас, и, используя второй подход, вы тот, который должен обеспечить эту зависимость следующим образом:

$class = new ClassA(new ClassB);

Надеюсь, это немного проясняет ситуацию, хотя, как я уже говорил, это большой вопрос.

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