laravel:服务提供者的实际应用

来源:互联网 发布:mac卸载 编辑:程序博客网 时间:2024/05/21 19:30

接触laravel也有一段时间了,但是高大上的功能基本上没有用到,现在可以研究一些高大上的功能。

服务提供者

服务提供者在laravel中可以直接理解成一个提供全局服务的业务逻辑代码。服务提供者是laravel的loC容易中的一个组成部分。loC容易是一种用来解决php代码中以来关系的一种设计模式,具体怎么实现这里不多做介绍,感兴趣的同学可以自行百度搜索。

应用举例

我的应用里需要用到一个短信验证的服务功能,我们就可以使用一个服务提供者去注册一个短信服务的功能,将其高度封装后,在需要的控制器内直接访问。这样做的逻辑不仅让业务逻辑看起来更清晰,并且能更好的进行管理

定义一个服务

通常我们会将服务定义在http/Service文件夹下 我们在这下面创建一个SMSService.php(也就是在核心目录ventor中)

<?phpnamespace App\Service;public function __construction(){}//在这里定义了一个发送sms的方法,只需要调用这个方法并传入相应的参数就能发送短信//也就是说 在控制器中调用这个方法就可以实现发送短信 public function send($phone,$content){}

定义一个服务提供者

有了服务后 我们需要一个服务提供者来提供服务。
创建服务提供者我们可以使用artsian来创建 php artisan make:provider SMSServiceProvider

创建好provider后,我们只需要将服务注册就行了,创建好的提供者\SMSServiceProvide在app/provider目录下面

<?phpnamespace App\Providers;use Illuminate\Support\ServiceProvider;use App\Services\SMSServer;      //这里不用写全了,,,不用写smsserver.phpclass SmsserviceProvider extends ServiceProvider{/**bootstrap the application services.*#return void*/public function boot(){//}/**定义这个函数并且使用bind函数就能将服务绑定,第一个参数是这个服务的名字*第二个参数是一个回调函数,我们在里面将我们服务的类进行了初始化并返回*@return void***/public function register(){$this -> app ->bind('sms',function(){ $sms_server = new SMSServer();return $sms_server;});}}

注册服务提供者到全局中


在laravel中所有的服务都是通过服务提供者来提供的,但是要想在全局中使用服务提供者需要将服务者注册到全局在config/app.php中//在app.php的这个数组中加入这条语句,将服务提供者注册到全局'providers'=>['App\Providers\SMServiceProvider',]

使用服务

将服务提供者注册到全局后,就可以在laravel任意一个地方嗲用这个服务了。laravel中通过服务提供者调用服务的方式很多,这里我之提一种我最常用的

//这是一个认证控制器  我们需要在这里通过短信验证进行认证

class AuthController extends Controller{  //发送手机验证码方法private function sendVerifycode($phone){     //前面是你的业务逻辑 然后调用send方法发送短信  app('sms') -> send($phone_number,"$verify_code 为您的验证码 请尽快完成注册");}}


可以看到注册了服务提供者在全库任意地方调用服务内的方法都将十分方便,使用这种方式可以让我们的代码更加优美。





阅读全文
0 0
原创粉丝点击