PHPackages                             maximaster/production-calendar - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. maximaster/production-calendar

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

maximaster/production-calendar
==============================

Работа с производственным календарём, встроено получение данных с basicdata.ru

0.2.2(8y ago)11382[1 PRs](https://github.com/maximaster/production-calendar/pulls)MITPHPPHP &gt;=5.4

Since Jun 8Pushed 7y ago2 watchersCompare

[ Source](https://github.com/maximaster/production-calendar)[ Packagist](https://packagist.org/packages/maximaster/production-calendar)[ RSS](/packages/maximaster-production-calendar/feed)WikiDiscussions master Synced 4w ago

READMEChangelogDependencies (2)Versions (6)Used By (0)

Production Calendar
===================

[](#production-calendar)

Предоставляет возможность проверить является ли день выходным|праздничным|рабочим. Данные предоставлены [basicdata.ru](http://basicdata.ru), однако, библиотека позволяет подключить любой источник данных.

Установка
=========

[](#установка)

```
composer require maximaster/production-calendar
```

Примеры использования
=====================

[](#примеры-использования)

Для полного списка доступных функций обратитесь к phpDoc пубичных методов класса Calendar.

isFree($day)
------------

[](#isfreeday)

Проверяет, является ли день "свободным", т.е. либо праздником, либо рядовым выходным

```
use Maximaster\ProductionCalendar\Calendar;
use Maximaster\ProductionCalendar\RulesProvider\BasicdataProvider;

$calendar = Calendar::fromProvider(new BasicdataProvider);
if ($calendar->isFreeDay('01.01.2017')) {
```

isDay($day, $types)
-------------------

[](#isdayday-types)

Проверяет, относится ли день к определённому типу (или одному из типов, если передан массив). Доступные типы см. константы класса Rules

```
use Maximaster\ProductionCalendar\Rules;
if ($calendar->isDay('01.01.2017', [Rules::HOLIDAY, Rules::PRE_HOLIDAY])) {
```

getDayType($day)
----------------

[](#getdaytypeday)

Возвращает тип дня

```
$calendar->getDayType('01.01.2017'); // Rules::REGULAR_REST
```

getMonthWorkDaysCount($year, $month)
------------------------------------

[](#getmonthworkdayscountyear-month)

getMonthWorkDaysCount($dayOfMonth)
----------------------------------

[](#getmonthworkdayscountdayofmonth)

Возвращает количество рабочих дней в указанном месяце

```
$calendar->getMonthWorkDaysCount(2017, 6); // 21
```

Кеширование
===========

[](#кеширование)

Позволяет кешировать результаты любого источника с помощью CacheProvider, в том числе встроенного. Пример:

```
Calendar::fromProvider(new CacheProvider(new BasicdataProvider));
```

Для использования необходимо подключить пакет desarrolla2/cache

Использование как сервиса в Symfony (2.8)
=========================================

[](#использование-как-сервиса-в-symfony-28)

app/config/services.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"]
```

любой код с доступом к контейнеру

```
$calendar = $this->getContainer()->get('app.calendar');
```

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~9 days

Total

5

Last Release

3273d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ab1bbc009e4fa562e3c976d1d1be7b5a61e2199b28e43828632eb8c72f827631?d=identicon)[mlavrinenko](/maintainers/mlavrinenko)

---

Top Contributors

[![mlavrinenko](https://avatars.githubusercontent.com/u/15840214?v=4)](https://github.com/mlavrinenko "mlavrinenko (5 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/maximaster-production-calendar/health.svg)

```
[![Health](https://phpackages.com/badges/maximaster-production-calendar/health.svg)](https://phpackages.com/packages/maximaster-production-calendar)
```

###  Alternatives

[setono/sylius-pickup-point-plugin

Pickup point plugin for Sylius

2162.9k8](/packages/setono-sylius-pickup-point-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
