https://github.com/maximaster/production-calendar
Работа с производственным календарём, встроено получение данных с basicdata.ru
https://github.com/maximaster/production-calendar
Last synced: 6 months ago
JSON representation
Работа с производственным календарём, встроено получение данных с basicdata.ru
- Host: GitHub
- URL: https://github.com/maximaster/production-calendar
- Owner: maximaster
- Created: 2017-06-08T15:52:46.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2018-10-10T10:00:21.000Z (almost 8 years ago)
- Last Synced: 2024-08-19T17:31:11.910Z (almost 2 years ago)
- Language: PHP
- Size: 12.7 KB
- Stars: 1
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Production Calendar
Предоставляет возможность проверить является ли день выходным|праздничным|рабочим.
Данные предоставлены [basicdata.ru], однако, библиотека позволяет подключить любой источник данных.
# Установка
```bash
composer require maximaster/production-calendar
```
# Примеры использования
Для полного списка доступных функций обратитесь к phpDoc пубичных методов класса Calendar.
## isFree($day)
Проверяет, является ли день "свободным", т.е. либо праздником, либо рядовым выходным
```php
use Maximaster\ProductionCalendar\Calendar;
use Maximaster\ProductionCalendar\RulesProvider\BasicdataProvider;
$calendar = Calendar::fromProvider(new BasicdataProvider);
if ($calendar->isFreeDay('01.01.2017')) {
```
## isDay($day, $types)
Проверяет, относится ли день к определённому типу (или одному из типов, если передан массив). Доступные типы см. константы класса Rules
```php
use Maximaster\ProductionCalendar\Rules;
if ($calendar->isDay('01.01.2017', [Rules::HOLIDAY, Rules::PRE_HOLIDAY])) {
```
## getDayType($day)
Возвращает тип дня
```php
$calendar->getDayType('01.01.2017'); // Rules::REGULAR_REST
```
## getMonthWorkDaysCount($year, $month)
## getMonthWorkDaysCount($dayOfMonth)
Возвращает количество рабочих дней в указанном месяце
```php
$calendar->getMonthWorkDaysCount(2017, 6); // 21
```
# Кеширование
Позволяет кешировать результаты любого источника с помощью CacheProvider, в том числе встроенного. Пример:
```php
Calendar::fromProvider(new CacheProvider(new BasicdataProvider));
```
Для использования необходимо подключить пакет desarrolla2/cache
# Использование как сервиса в Symfony (2.8)
app/config/services.yml
```yml
app.calendar.basicdata_provider:
public: false
class: Maximaster\ProductionCalendar\RulesProvider\BasicdataProvider
app.calendar.cached_basicdata_provider:
public: false
class: Maximaster\ProductionCalendar\RulesProvider\CacheProvider
arguments: ["@app.calendar.basicdata_provider"]
app.calendar:
class: Maximaster\ProductionCalendar\Calendar
factory: ['Maximaster\ProductionCalendar\Calendar', fromProvider]
arguments: ["@app.calendar.cached_basicdata_provider"]
```
любой код с доступом к контейнеру
```php
$calendar = $this->getContainer()->get('app.calendar');
```
[basicdata.ru]:http://basicdata.ru