Laravel中短信验证码发送功能的“标准化”开发
Laravel简介
Laravel是一个简单优雅的PHP Web开发框架。它可以把你从面条一样凌乱的代码中解放出来;它可以帮助你构建一个完美的web APP,每一行代码都可以简洁而富有表现力。
在Laravel中,有一套高级的PHP ActiveRecord实现——雄辩ORM。它可以轻松地将“约束”应用到关系的双方,这样您就可以完全控制数据,并享受ActiveRecord的所有便利。在Fluent中,雄辩的本机支持查询构建器的所有方法。
Laravel中“标准”的开发;短信验证码发送功能需求场景
发送“验证码”或“消息通知”,可以发送到手机或电子邮件地址。
完成
首先,Laravel中的规范是使用Laravel的“消息通知”,基于场景作为“验证码”。几乎所有软件系统都使用这一要求。
创建通知方案
第一步是用PHP artisan make:通知创建一个通知类。成功创建后,默认情况下有三种方法via、toMail和toArray。因为是发送verificationcode,所以控件类被命名为VerificationCode。
然后创建一个验证码数据模型和数据表迁移,可以使用PHP artisan make:模型'验证码\'-m直接快速创建。
ThinkSNS的迁移如下:
其次,打开数据模型类,并在其中添加照明\通知\可通知特性:
从代码中我们可以看到,我们还增加了“软删除”,因为是基于手机号或邮箱地址的验证码发送的,所以不需要其他内置的花花肠子,也不需要记录在“消息路由通知for数据表”中,所以我们选择直接返回要发送的账号(手机号或邮箱地址)。
加入工厂模式,快速发送
打开数据库/工厂/modelfactory.php并添加关于通知数据模型的工厂定义:
这样,我们就可以通过factory的factory功能快速创建验证码并发送通知(\ Zhiyi \ plus \ models \ verificationcode 33603360 class)。
为什么要在验证码数据模型中添加通知字符?
首先,特性照亮\通知\通知,Laravel在默认情况下被添加到User模型中,因此可以通过$user-notify()快速向用户发送通知,但是规范文档中有这样一句话:
请记住,您可以在任何型号上使用照明\通知\通知特性。您不仅限于将其包含在您的用户模型中。
这是Laravel官方文档的原话,意思是说明\通知\ notify不仅仅用在User模型上。
因此,我们在验证码模型中增加了implicate \ notifications \ notify,这与Laravel通知的正确使用是完全一致的。
发展通知类
首先,数据表迁移中有一个字段通道,即通知通道标识符。我们可以根据这个值决定如何发送验证码,这个操作是在通知类的via中实现的:
我们的选择是直接返回通道值,可以是任意值。只要我们实现这个通知通道,我们就可以发送它。Laravel内置了数据库、邮件、nexmo等一些发送渠道。
完成电子邮件验证码发送
其实这一步我们要做的事情很少。当通知类产生时,我们已经完成了toMail方法,所以我们可以直接修改它的消息内容。
完成短信验证码发送
我们使用over rue/easy-SMS包进行短信发送,这是一个由安正超开发的短信发送客户端。内置了很多短信平台,实现非常出色。(土考:虽然有些细节有问题,比如没有按照合同约定调用方法交付网关)
首先通过短信发送客户端包composer require over true/easy-sms,然后新建一个config/config/SMS . PHP,只需按照easy-SMS首页的说明添加内容,先贴上我们的配置内容(为了减少文章字数,只保留阿里大于配置):
我们为不同的场景增加了通道配置,比如验证码场景代码,方便信使读取配置。
然后打开AppServiceProvider.php并在注册表中添加以下内容:
到目前为止,EasySms在Laravel中的集成已经完成,但实际功能还没有开发出来。让我们往下看。
开发短信发送渠道
为什么发展?首先,easy-sms支持很多,可以考虑为每个发送平台分别开发一个通知发送通道类,也可以只开发一个sms发送通道类。我们选择开发短信通知发送类,通过easy-sms的策略机制向多个平台发送验证码。
首先创建一个新的app/notifications/channels/smschannel . PHP文件,因为Laravel没有提供生成函数,所以需要自己创建,只需要实现send方法即可。SmsChannel案文如下:
这样,基于easy-sms的短信通知发送通道就完成了。
在开发场景中发送消息
这部分完全属于易短信的使用和开发。我们将创建一个新的VerificationCodeMessage.php,内容如下:
然后我们回到VerificationCode验证码通知类,并添加toSms方法。我的代码如下:
场景配置,如不同渠道的验证码模板等。使信使可以根据发送网关判断使用场景的配置是什么。
同样,easy-sms的契约设计应该是同样的想法,但是当调用实际的网关时,getContent/getTemplate/getData根本没有通过网关。
好了,我们的开发完成了。
发送验证码
验证码数据模型在创建时被添加到“工厂”中,因此我们可以直接使用工厂功能并发送演示:
你完了,容易-短信是一个非常好的包。
以上代码均来自ThinkSNS Plus,看完整的开发代码就能看到仓库:
https://github.com/slimkit/thinksns-plus捷信:
摘要
以上是边肖介绍的Laravel中短信验证码发送功能的“标准”开发。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!
版权声明:Laravel中短信验证码发送功能的“标准化”开发是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。