The Laravel service container is a powerful tool for managing class dependencies and performing dependency injection. Dependency injection is a fancy phrase that essentially means this: class dependencies are "injected" into the class via the constructor or, in some cases, "setter" methods.<\/p>\n

Let's look at a simple example:<\/p>\n

\n
1<\/span><?php<\/span><\/div>
2<\/span> <\/div>
3<\/span>namespace<\/span> App\\Http\\Controllers;<\/span><\/div>
4<\/span> <\/div>
5<\/span>use<\/span> App\\Services\\<\/span>AppleMusic<\/span>;<\/span><\/div>
6<\/span>use<\/span> Illuminate\\View\\<\/span>View<\/span>;<\/span><\/div>
7<\/span> <\/div>
8<\/span>class<\/span> <\/span>PodcastController<\/span> <\/span>extends<\/span> <\/span>Controller<\/span><\/div>
9<\/span>{<\/span><\/div>
10<\/span> <\/span>\/**<\/span><\/div>
11<\/span> * Create a new controller instance.<\/span><\/div>
12<\/span> <\/span>*\/<\/span><\/div>
13<\/span> <\/span>public<\/span> <\/span>function<\/span> <\/span>__construct<\/span>(<\/span><\/div>
14<\/span> <\/span>protected<\/span> <\/span>AppleMusic<\/span> <\/span>$apple<\/span>,<\/span><\/div>
15<\/span> <\/span>)<\/span> {}<\/span><\/div>
16<\/span> <\/div>
17<\/span> <\/span>\/**<\/span><\/div>
18<\/span> * Show information about the given podcast.<\/span><\/div>
19<\/span> <\/span>*\/<\/span><\/div>
20<\/span> <\/span>public<\/span> <\/span>function<\/span> <\/span>show<\/span>(<\/span>string<\/span> <\/span>$id<\/span>)<\/span>:<\/span> <\/span>View<\/span><\/div>
21<\/span> {<\/span><\/div>
22<\/span> <\/span>return<\/span> <\/span>view<\/span>(<\/span>'<\/span>podcasts.show<\/span>'<\/span>,<\/span> <\/span>[<\/span><\/div>
23<\/span> <\/span>'<\/span>podcast<\/span>'<\/span> <\/span>=><\/span> <\/span>$<\/span>this<\/span>->apple-><\/span>findPodcast<\/span>($<\/span>id<\/span>)<\/span><\/div>
24<\/span> <\/span>]);<\/span><\/div>
25<\/span> }<\/span><\/div>
26<\/span>}<\/span><\/div>