那是因为它使用了 Facade 模式。
在您的app.php 配置文件中有一个名为“别名”的部分。该部分中有一行:'Mail' => Illuminate\Support\Facades\Mail::class, 指向 Facade,它返回 service container (IoC) 中绑定的 key,它返回要使用的类/对象。
所以你需要找到创建绑定的地方。绑定由App::bind('foo', .. )、App::singleton('foo', .. )或App::instance('foo', .. )方法创建。
我搜索'mailer',找到了创建绑定的文件lluminate\Mail\MailServiceProvider:
$this->app->singleton('mailer', function($app) {
...
// this is the class resolved by the IoC.
$mailer = new Mailer(
$app['view'], $app['swift.mailer'], $app['events']
);
...
return $mailer;
});
如您所见,service provider 中返回了 \Illuminate\Mail\Mailer 类,这是您使用 Facade 时使用的类,称为 Mail。
快速发现 Facade 背后的类:
也可以通过dump类名快速找到类名:dd( get_class( Mail::getFacadeRoot() ) );
更多信息