midnite81 / bank-holidays
一个获取英国银行假日的库
v3.0.0
2022-06-04 15:58 UTC
Requires
- php: >=7.1
- guzzlehttp/psr7: ^1.6|^2.0
- http-interop/http-factory-guzzle: ^1.0
- midnite81/json-parser: ^1.0
- nesbot/carbon: ^1.0|^2.0
- php-http/curl-client: ^1.0|^2.1
- php-http/message: ^1.0
Requires (Dev)
- illuminate/support: ^5.0|^6.0|^7.0
- laravel/framework: ^5.0|^6.0|^7.0
- mockery/mockery: ^1.1
- orchestra/testbench: ^3.0|^4.0|^5.0
- php-coveralls/php-coveralls: ^1.0|^2.2
- phpunit/phpunit: ^3.0|^4.0|^5.0|^6.0|^7.0|^8.0|^9.0
- symfony/finder: ^3.4|^4.1
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)