php - Laravel Password::broker() 在哪里,它有什么作用?

标签 php laravel

Laravel 密码门面中的 broker() 方法在哪里?我试图了解代码的作用,但我似乎无法在任何文件中找到该方法。

我希望将当前的电子邮件系统更改为 PHPMailer,因为内置的 Mail 类无法正常工作,而且似乎没有提供任何关于它正在尝试做什么的反馈。 Mail 类由 SendsPasswordResetEmails.php 中的 sendResetLinkEmail() 方法使用

最佳答案

这并不能准确回答您的问题,但我认为最终这将是您所需要的。修改 Laravel 代码使其使用 PHPMailer 而不是默认邮件系统是非常糟糕的做法,因为那样你将永远无法更新 Laravel,因为你的更改可能会被覆盖。更好的做法是告诉 Laravel 在需要邮寄任何东西时使用 PHPMailer 而不是 SwiftMailer。这样,所有 Laravel 代码都保持不变。

在深入研究并尝试弄清楚如何用 PHPMailer 替换 SwiftMailer 之前,我会尝试弄清楚为什么 SwiftMailer 不适合您,因为要使 PHPMailer 与 Laravel 正常工作可能需要大量工作。此外,无论出于何种原因 SwiftMailer 无法正常工作,它也可能导致 PHPMailer 无法正常工作,因此在这种情况下,这将是在浪费时间。

快速浏览文档,PHPMailer 似乎使用 SMTP,幸运的是,SwiftMailer 有一个 SMTP 驱动程序。所以请确保在 config/mail.php 中,您已正确设置所有设置。使用 smtp 驱动程序(我认为这是默认设置),确保正确设置主机和端口等...

如果您仍然无法使其正常工作并确定需要切换到 PHPMailer,那么您可能还有一些工作要做。编写所有代码(也许它值得在 github 上拥有自己的项目)对于 SO 答案来说太多了,但我会尝试详细说明需要采取的步骤。

首先,您应该深入了解 Illuminate\Mail\Mailer。您将需要创建一个与此类似的新类。它需要实现 MailerContractMailQueueContract。当您执行此操作时,我将仅使用 Illuminate\Mail\Mailer 作为指南,这是您在 Illuminate\Mail\Mailer 使用 SwiftMailer 的地方使用 PHPMailer 的地方。我认为其中很多功能,您可能根本不需要更改,只需复制即可。

然后您将需要创建一个新的服务提供者,它将您刚刚创建的自定义 Mailer 类绑定(bind)到具有 key mailer 的应用程序。执行此操作时再次使用 Illuminate\Mail\MailServiceProvider 作为指南。在这里您将构建具有任何依赖项(`$app['view']、$app['events'],可能还有 PHPMailer 本身)和配置值(smtp 服务器)的自定义 Mailer 类, port, from email, etc...) 并在...的回调函数中返回它

$this->app->singleton('mailer', function ($app) {
    ...
});

那么最后要做的就是测试它。进入 config/app.php 并修改带有 ...

的行
Illuminate\Mail\MailServiceProvider::class,

因此它会输出您设置的新服务提供商类的类名。

关于php - Laravel Password::broker() 在哪里,它有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39855740/

相关文章:

php - mock Eloquent 集合

php - 如何在 Laravel Eloquent 中指定多个一对一关系?

php - 如何更改 created_at 和 updated_at 值 laravel 的默认格式

php - MySQL 只返回字段的第一个字符,但在本地工作正常

java - 解密java中在php中使用AES加密的字符串

php - 如何在 Laravel 和 Eager load 关系中将多个单独的 eloquent 模型组合为一个模型

api - Laravel 5.3,使用 api.example.com 到 example.com/api

php - 在 Laravel 中减去时间

php - MYSQL 更新查询无法完成

php - 您可以从 PHP 中的方法中获取方法名称吗?