namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Bar; //Q1. where is include App\Bar?
//Q2. where is new Bar; ?
class Foo extends Controller
{
public function foo(Request $request, Bar $bar){ //Q3. what is Bar $bar means? pass object into method?
#1
$this->validateLogin($request);
#2
$bar->barFunc();
}
}
我正在学习laravel,我注意到laravel传递对象到方法
但我很困惑它是如何运作的。
这是我的问题
我们use namespace App\Bar
,包含文件在哪里? (当您使用命名空间时,laravel auto包含文件吗?)
哪里是new Bar;
?
foo(Request $request, Bar $bar)
如何运作?
它是否将对象传递给方法?
为什么不
foo(){
$bar = new Bar;
}
答案 0 :(得分:1)
数目:
答案 1 :(得分:1)
根据Laravel Docs,
的示例
Laravel对控制器的方法使用type-hinting
个依赖项。方法注入的常见用例是将Illuminate\Http\Request
实例注入到控制器方法中。详细了解Dependency Injections in Controller
Laravel的Container被称为IOC(“Inversion of Control”)容器,就是这种情况,因为它允许您的控件发生在应用程序的顶层:你问你的低级“邮件程序”实例的级别代码(控制器,实现类等),容器为您提供一个。您的低级代码并不关心实际发送邮件的服务--Mandrill? Mailgun?发邮件?没关系,只要邮件程序类的接口是相同的。
希望这有帮助!