微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel 服务容器

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();


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐