PHPackages                             fr3on/php-recur - 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. fr3on/php-recur

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

fr3on/php-recur
===============

A modern PHP 8.4+ library for recurring date/time rules (iCal RRULE).

0.0.1(3mo ago)0220MITPHPPHP &gt;=8.4CI passing

Since Apr 13Pushed 3mo agoCompare

[ Source](https://github.com/fr3on/php-recur)[ Packagist](https://packagist.org/packages/fr3on/php-recur)[ RSS](/packages/fr3on-php-recur/feed)WikiDiscussions master Synced 1w ago

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

php-recur
=========

[](#php-recur)

A modern, high-performance PHP 8.4+ library for recurring date/time rules (iCal RRULE).

[![CI](https://github.com/fr3on/php-recur/actions/workflows/ci.yml/badge.svg)](https://github.com/fr3on/php-recur/actions)[![PHP Version](https://camo.githubusercontent.com/2aed50cc19486e0407775311c22f530383b2791ca08b8c9583ebb80cb5e364e7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e342532422d626c75652e737667)](https://php.net)[![License](https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667)](LICENSE)

Features
--------

[](#features)

- **PHP 8.4+ Optimized**: Leverages modern features like `readonly` classes, enums, and Generators.
- **Lazy Iteration**: Processes occurrences one-by-one, making it safe for infinite rules.
- **Timezone Aware**: Correctly handles DST transitions across all timezones.
- **RFC 5545 Compliant**: Implements the iCal RRULE specification including complex expansion logic.
- **Fluent Builder**: Developer-friendly API for common recurrence patterns.

Installation
------------

[](#installation)

```
composer require fr3on/php-recur
```

Quick Start
-----------

[](#quick-start)

### Basic Daily Recurrence

[](#basic-daily-recurrence)

```
use Fr3on\Recur\Recur;

$occurrences = Recur::daily()
    ->starting(new DateTimeImmutable('2026-04-13'))
    ->count(10)
    ->take(10);
```

### Complex Monthly Rule

[](#complex-monthly-rule)

```
use Fr3on\Recur\Recur;
use Fr3on\Recur\Rule\Weekday;

// Second Monday of every month
$builder = Recur::monthly()
    ->on(Weekday::MO->nth(2))
    ->take(12);
```

### Parsing RRULE Strings

[](#parsing-rrule-strings)

```
$builder = Recur::fromRrule("FREQ=WEEKLY;BYDAY=MO,WE,FR;COUNT=10");
foreach ($builder->occurrences() as $date) {
    echo $date->format('Y-m-d');
}
```

Development
-----------

[](#development)

### Running Tests

[](#running-tests)

```
composer test
```

### Static Analysis

[](#static-analysis)

```
composer analyse
```

License
-------

[](#license)

MIT License. See [LICENSE](LICENSE) for details.

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance81

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity41

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

Unknown

Total

1

Last Release

102d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/205356416?v=4)[fr3onv](/maintainers/fr3onv)[@fr3onv](https://github.com/fr3onv)

---

Top Contributors

[![fr3on](https://avatars.githubusercontent.com/u/26393383?v=4)](https://github.com/fr3on "fr3on (1 commits)")

---

Tags

datetimeicalphprecurringrrulerules

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/fr3on-php-recur/health.svg)

```
[![Health](https://phpackages.com/badges/fr3on-php-recur/health.svg)](https://phpackages.com/packages/fr3on-php-recur)
```

###  Alternatives

[symfony/polyfill-intl-idn

Symfony polyfill for intl's idn\_to\_ascii and idn\_to\_utf8 functions

3.4k823.1M148](/packages/symfony-polyfill-intl-idn)

PHPackages © 2026

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