美文网首页laravel核心
laravel 契约的使用

laravel 契约的使用

作者: 云龙789 | 来源:发表于2018-09-07 18:14 被阅读22次

英文文档
laravel-china
建议还是看看英文原文比较好

  • 契约的使用这方面很少文章介绍,很多文章都是直接翻译了文档,并没有提到实际中的使用。

个人理解的契约就是接口,那么他的使用其实是应该类似于写观察者模式时候一样,方法中的参数使用的是接口,但实际传参的时候,用的是实例化接口的类。

在服务容器那一个章节,有这个一个介绍

先写一个接口和两个实例化的类

<?php

namespace App;

interface BookInterface
{
    public function getCurrentPage();
}
<?php

namespace App;

class EBook implements BookInterface
{
    public function getCurrentPage()
    {
        return 'EBook current page';
    }
}

<?php

namespace App;

class PaperBook implements BookInterface
{
    public function getCurrentPage()
    {
        return 'paper current page';
    }
}

$this->app->bind(
    'App\Contracts\EventPusher',
    'App\Services\RedisEventPusher'
);

原本想着直接在一个方法中这样写 app()->bind(BookInterface::class,PaperBook::class); 但测试后发现不行,
必须写到 App\Providers 目录下的文件夹中 register方法里才可以

<?php

namespace App\Providers;

use App\BookInterface;
use App\EBook;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
   
    public function register()
    {
        $this->app->bind(BookInterface::class,EBook::class);
    }
}

现在如果在一个方法中直接注入 BookInterface 接口,会默认使用 EBook 这个类

public function index(BookInterface $book)
    {
        dd($book->getCurrentPage());  // EBook current page
    }
  • 另一种实现方式就比较好理解
public function index()
    {
        return $this->getPage(new EBook());
    }

    public function getPage(BookInterface $book)
    {
        return $book->getCurrentPage();
    }

相关文章

  • 2019-03-31Contract 契约模式

    浅谈Laravel中的设计模式(四) Contract 契约模式 技术预备:熟悉Laravel的使用 契约模式(C...

  • laravel 契约的使用

    英文文档laravel-china建议还是看看英文原文比较好 契约的使用这方面很少文章介绍,很多文章都是直接翻译了...

  • laravel 契约(Contracts)

    laravel 契约(Contracts) 本文重在记录自己的理解和一些心得,如果有什么错误,或者不足,欢迎抛砖!...

  • Laravel思维导图之Laravel核心概念

    Laravel 的核心概念包括:服务容器、服务提供者、门面(Facades)、契约(Contracts)。 服务容...

  • 56. 契约 (Contracts)

    Laravel 的契约是一组定义框架提供的核心服务的接口。框架对每个契约都提供了相应的实现。 所有的 Larave...

  • Laravel 核心--Contracts 契约

    概述 Laravel 的 Contracts 是一组定义了框架核心服务的接口( interfaces )。 例如I...

  • laravel+laravel-admin安装

    laravel 6.*laravel-admin 2.* Laravel 使用 Composer[https://...

  • 接口契约测试

    接口断言引入契约校验目录: 一.背景二.校验原则三.快速使用1、python类契约使用2、json契约使用3、py...

  • laravel 基础教程 —— 契约

    契约 简介 laravel 的契约是对应用框架的核心服务所要求的一种强有力的约束。它本身定义一些接口,要求服务必须...

  • Laravel5.5 支付宝手机网站支付实例

    1、安装使用Laravel扩展库yansongda/laravel-payyansongda/laravel-pa...

网友评论

    本文标题:laravel 契约的使用

    本文链接:https://www.haomeiwen.com/subject/zqthgftx.html