Php Laravel-如何通过公开泛型类来抽象底层逻辑
我正在尝试为我的应用程序构建一个良好的构建块,以避免供应商锁定。这是Laravel 5.4,下面是我需要帮助的场景: 我想实现短信发送,但我不想被锁定到一个单一的供应商 从概念上讲,在代码中,我会这样做:Php Laravel-如何通过公开泛型类来抽象底层逻辑,php,laravel-5,Php,Laravel 5,我正在尝试为我的应用程序构建一个良好的构建块,以避免供应商锁定。这是Laravel 5.4,下面是我需要帮助的场景: 我想实现短信发送,但我不想被锁定到一个单一的供应商 从概念上讲,在代码中,我会这样做: use App/SMS; // controller public function send_sms() { SMS::send('Thanks for saving', $number); } 然而,SMS只是一个抽象,它将调用一个实际实现的类函数,我可能有很多,例如在配置
use App/SMS;
// controller
public function send_sms()
{
SMS::send('Thanks for saving', $number);
}
然而,SMS只是一个抽象,它将调用一个实际实现的类函数,我可能有很多,例如在配置文件中切换
class SMSGlobal implements SMSProvider
{
public function send($msg, $to)
{
// Whatever the logic here is for SMSGlobal to send an SMS.
}
}
class Nexmo implements SMSProvider
{
public function send($msg, $to)
{
// Whatever the logic here is for Nexmo to send an SMS.
}
}
// Somewhere else, I would set SMS to a particular provider (in config)?
'SMSProvider' => 'SMSGlobal'
我希望这是有道理的。我只是不确定如何实现这种类型的东西——从概念上讲,它是有意义的(在我的头脑中)
我会有很多这样的抽象,所以系统不会被供应商锁定
这类似于缓存的工作方式,在配置中设置“redis”,然后调用Cache::get()使用redis提供程序,但作为程序员,后端是数据库/文件还是redis没有区别
干杯
仅供参考-这里也有问题
但不确定社区的规模。听起来你在描述如何创建和传递一个绑定到实现类的社区。在Laravel中,您可以将接口与实现类绑定,如上的文档所述