在php项目中 各位兄台是怎么优雅的调用工具类库的呢?

最近一直在纠结项目分层架构的问题其中最纠结的就是在项目中如何引入第三方类库
比如说有个msg控制器要发送邮件
classMsgConstrollerextendsConstroller{
publicfunctionsend(){
$email=newemail([options....]);
$email->send();
}
}
这个控制器通过引入一个email工具类实现了发送email的功能但是如果同时要发送短信呢
classMsgConstrollerextendsConstroller{
publicfunctionsend(){
$email=newemail([options....]);
$sms=newsms([options....]);
$email->send();
$sms->send();
}
}
这样感觉很不优雅所以我想到了使用个服务层来解决
classMsgConstrollerextendsConstroller{
publicfunctionsend(){
$msg=service('Msg');//实例化一个Msg服务类
$msg->send('message,email,sms');//通过send接口传的参数会同时发送站内信、邮件、短信
}
}
但是这样又会把new操作给转移到服务层感觉还不是怎么理想那么大家有什么比较简单优雅的解决方案吗?
临摹微笑
浏览 326回答 2
2回答

慕的地6264312

sms和email等同时实现send()方法接口,再用Composite设计模式组合起来怎样?classMsgConstrollerextendsConstroller{publicfunctionsend(){$msg=newMsgComposite();$msg->add(newemail());$msg->add(newsms());$msg->send();}}new操作现在框架好像都喜欢用统一的ServiceLocator解决,方便统一替换利于单元测试
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript