Laravel 服务容器
Laravel 服务容器是一个用于管理类依赖以及实现依赖注入的强有力工具。依赖注入这个名词表面看起来花哨,实质上是指:通过构造函数,或者某些情况下通过「setter」方法将类依赖「注入」到类中。
生活中的容器也比较多。例如,装药的药盒也是容器的一种:
想要把服务放到容器中去,需要使用服务绑定。服务绑定主要有以下几种方式:
1.简单绑定 - bind 方法;
2.绑定一个单例 - singleton 方法;
3.绑定实例 - instance 方法;
4.绑定接口到实现 - 绑定的标识是一个契约。
语法:$this->app->绑定方法(标识, 绑定对象);
类似于把药放进药盒「药箱」过程。
服务解析:
服务被放入容器中后,需要在需要的时候使用。想要使用服务可以先获取服务的对象,而获取服务的对象的过程可以称之为解析。服务对象的解析主要有以下几种方式:
1.make 方法:
make 方法从容器中解析出类实例。 make 方法接收你想要解析的类或接口的名字。
2.resolve 辅助函数:
你的代码处于无法访问 $app 变量的位置,则可用全局辅助函数 resolve 来解析。
语法:$this->app->解析方法(标识);
类似于把药从药盒「药箱」取出的过程。
例如:
1.简单一个服务
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2021/4/27 * Time: 11:59 */ namespace App\Http\Controllers; class FwController { public function getFw() { return '获取服务'; } }
2.利用服务提供者将这个服务注册到容器里去1.先创建一个服务提供者,然后将这个服务提供者注册到app.php的providers里
php artisan make:provider RiakServiceProvider <?php namespace App\Providers; use App\Http\Controllers\FwController; use Illuminate\Support\ServiceProvider; class RiakServiceProviderextends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { //注册服务 $this->app->bind('fw',FwController::class); } }
3.调用服务
app('fw')->getFw();
本文由:xiaoshu168.com 作者:xiaoshu发表,转载请注明来源!