midnite81/bank-holidays

一个获取英国银行假日的库

v3.0.0 2022-06-04 15:58 UTC

This package is auto-updated.

Last update: 2024-09-04 21:03:10 UTC


README

此包集成了英国政府银行假日Json响应。它主要设计用于与laravel一起使用,但底层是框架无关的。此包需要PHP 7.1或更高版本。

安装

composer require midnite81/bank-holidays

如果您正在使用laravel 5.4或更早版本,您需要注册Bank Holiday服务提供者。如果您使用5.5或更高版本,包应自动发现。

 'providers' => [
      ...
      \Midnite81\BankHolidays\BankHolidayServiceProvider::class,
      ...
  ];

您需要发布配置文件。为此,请运行

php artisan vendor:publish provider="Midnite81\BankHolidays\BankHolidayServiceProvider"

限制

英国政府提供了银行假日json源,在撰写本文时,它只包括2015年至2021年之间的年份。

版本

查看变更日志以查看更改。

HTTP标准

为了遵守更好的标准,此包使用流行的强大PHP-HTTP库来发起HTTP请求。如果您愿意,这允许您使用自己的HTTP客户端而不是此包中提供的默认客户端。有关PHP-HTTP的更多信息,请访问php-http.org

Laravel使用示例

检查日期是否为银行假日

use Midnite81\BankHolidays\Contracts\IBankHoliday;

public function myFunction(IBankHoliday $bankHoliday)
{ 
    $bankHolidayEntity = $bankHoliday->bankHolidayDetail(
        \Carbon\Carbon::create(2020, 01, 01), 
        \Midnite81\BankHolidays\Enums\Territory::ENGLAND_AND_WALES
    );

    // if the date provided is a bank holiday a BankHolidayEntity is returned
    // otherwise it returns null. If the entity is returned you can access the entity properties below.

查看实体属性

   
    if ($bankHoliday->isBankHoliday(
        \Carbon\Carbon::create(2020, 01, 01),
        \Midnite81\BankHolidays\Enums\Territory::ENGLAND_AND_WALES
        )) {
        // if it is a bank holiday do this ...
    }
}

获取所有银行假日日期

use Midnite81\BankHolidays\Contracts\IBankHoliday;

public function myFunction(IBankHoliday $bankHoliday)
{ 
    $bankHolidays = $bankHoliday->getAll(\Midnite81\BankHolidays\Enums\Territory::ENGLAND_AND_WALES);

    foreach($bankHolidays as $bankHoliday) { 
        echo $bankHoliday->title . "<br>\n";  
    }
}

检查数据范围

英国政府提供的数据用于此包,并受到日期范围限制。由于这些限制,此包提供了两种方法,以便您确定数据中可用的最小和最大日期。

use Midnite81\BankHolidays\Contracts\IBankHoliday;

public function myFunction(IBankHoliday $bankHoliday)
{ 
    $minimumDate = $bankHoliday->getMinDate(\Midnite81\BankHolidays\Enums\Territory::ENGLAND_AND_WALES);
    $maximumDate = $bankHoliday->getMaxDate(\Midnite81\BankHolidays\Enums\Territory::ENGLAND_AND_WALES);
}

无laravel使用

public function someFunction()
{ 
    $config = [
       'cache-duration' => 60 * 60 * 24,
       'bank-holiday-url' => 'https://www.gov.uk/bank-holidays.json',
       'cache-key' => 'midnite81-bank-holidays',
       'cache-class' => YourCacheClass::class, // you will need to create a cache class
       'filesystem-class' => \Midnite81\BankHolidays\Drivers\PhpFileSystem::class,
       'http-client' => null,
       'failure-backup' => true,
       'request-factory' => null
    ];

    $cache = new YourCacheClass(); // this must implement \Midnite81\BankHolidays\Contracts\Drivers\ICache
    $client = new \Midnite81\BankHolidays\Services\Client(null, null, $config);
    $bankHoliday = new \Midnite81\BankHolidays\BankHoliday($client, $cache, $config);

    // Once you have $bankHoliday instantiated you can use the following methods

    $bankHoliday->getAll(int $territory);
    $bankHoliday->bankHolidayDetail(Carbon $date, int $territory);

    // for territory please use the constants in `Midnite81\BankHolidays\Enums\Territory`
}

银行假日实体

银行假日实体具有以下属性。

title - 假日的标题 - 例如:新年
date - 银行假日日期的Carbon实例
notes - 关于银行假日的任何备注
bunting - 可能是指是否展示彩旗
territory - 银行假日适用的地区

地区

以下地区可用

Midnite81\BankHolidays\Enums\Territory::ENGLAND_AND_WALES; // England and Wales   
Midnite81\BankHolidays\Enums\Territory::SCOTLAND; // Scotland   
Midnite81\BankHolidays\Enums\Territory::NORTHERN_IRELAND; // Northern Ireland   
Midnite81\BankHolidays\Enums\Territory::ALL; // All territories (e.g. England, Wales, Scotland and Northern Ireland)