laravel5.2总结--服务提供者,契约(Contracts)
2016-11-22 08:49
399 查看
首先理解两个概念
1.契约:一组定义了框架核心服务的接口
2.服务提供者:所有 Laravel 应用程序启动的中心所在。
包括你自己的应用程序,以及所有的 Laravel 核心服务,都是通过服务提供者启动的。
启动指的是 注册 事物,包括注册服务容器绑定、事件侦听器、中间件,甚至路由。
我们还是继续超人的故事,现在拿xpower来具体分析
xpower的诞生---(契约和服务提供者)
1.定义一个契约(接口)
app\Contracts文件夹下
2.一个实现这个接口的类
app\Services文件夹下
3、创建服务提供者
app\Providers文件夹下
4、注册服务提供者
配置文件config/app.php的providers数组中:
通过服务提供者,我们将超能力,绑定到了服务容器中,这样我们可以在任何时候实例化这个超能力了
需要注意的一些地方:
1.所有的服务提供者都继承了 Illuminate\Support\ServiceProvider 类。
2.这个抽象类要求你在你的提供者上定义至少一个方法:register。在 register 方法中,你应该只将事物绑定至服务容器之中。永远不要试图在 register 方法中注册任何事件侦听器、路由或任何其它功能。
1.契约:一组定义了框架核心服务的接口
2.服务提供者:所有 Laravel 应用程序启动的中心所在。
包括你自己的应用程序,以及所有的 Laravel 核心服务,都是通过服务提供者启动的。
启动指的是 注册 事物,包括注册服务容器绑定、事件侦听器、中间件,甚至路由。
我们还是继续超人的故事,现在拿xpower来具体分析
xpower的诞生---(契约和服务提供者)
1.定义一个契约(接口)
app\Contracts文件夹下
<?php namespace App\Contracts; interface SuperModuleContract { //激活超能力 public function activate(array $target); }
2.一个实现这个接口的类
app\Services文件夹下
<?php namespace App\Services; use App\Contracts\SuperModuleContract; class XPower implements SuperModuleContract { public function activate(array $target) { // 这只是个例子。。具体自行脑补 } }
3、创建服务提供者
app\Providers文件夹下
<? php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Services\XPower; class XPowerProvider extends ServiceProvider { public function boot() { // } public function register() { //singleton绑定单例 //如何使用:App::make('xpower')方法时调用 $this->app->singleton('xpower',function(){ return new XPower(); }); //bind绑定实例到接口以便依赖注入 // 如何使用:在类构造方法中实例化,并指定接口类型 $this->app->bind('App\Contracts\SuperModuleContract',function(){ return new XPower(); }); } }
4、注册服务提供者
配置文件config/app.php的providers数组中:
'providers' => [ //其他服务提供者 App\Providers\XPowerProvider::class, ],
通过服务提供者,我们将超能力,绑定到了服务容器中,这样我们可以在任何时候实例化这个超能力了
需要注意的一些地方:
1.所有的服务提供者都继承了 Illuminate\Support\ServiceProvider 类。
2.这个抽象类要求你在你的提供者上定义至少一个方法:register。在 register 方法中,你应该只将事物绑定至服务容器之中。永远不要试图在 register 方法中注册任何事件侦听器、路由或任何其它功能。
相关文章推荐
- laravel框架总结(五) -- 服务提供者(提及契约Contracts)
- laravel5.2总结--请求
- laravel5.2总结--blade模板
- laravel5.2总结--csrf保护
- Laravel 5 系统架构:服务提供者、服务容器、Contracts、Facades
- laravel5.2总结--文件上传
- laravel5.2总结--邮件
- laravel5.2总结--服务容器(依赖注入,控制反转)
- laravel5.2总结--返回值
- laravel5.2总结--软删除
- laravel5.2总结--本地化以及常量的使用
- laravel5.2总结--数据迁移
- laravel5.2总结--响应
- laravel5.2总结--ORM模型
- laravel5.2总结--服务容器(依赖注入,控制反转)
- laravel5.2总结--数据库操作
- laravel5.2总结--数据填充
- laravel5.2总结--集合
- laravel5.2总结--门面(facades)
- laravel5.2 学习之服务提供者