2015-06-26 17:02:29 +03:00
# RRULE for PHP
2017-02-24 18:49:37 +00:00
Lightweight and fast implementation of recurrence rules for PHP (`RRULE` from RFC 5545), to easily calculate recurring/repeating dates and events (such as in a calendar).
This library started as a port of [python-dateutil ](https://labix.org/python-dateutil ).
2015-06-26 21:49:52 +03:00
[![Build Status ](https://travis-ci.org/rlanvin/php-rrule.svg?branch=master )](https://travis-ci.org/rlanvin/php-rrule)
2016-03-23 18:49:37 +02:00
[![Latest Stable Version ](https://poser.pugx.org/rlanvin/php-rrule/v/stable )](https://packagist.org/packages/rlanvin/php-rrule)
2016-11-11 20:38:59 +02:00
[![Total Downloads ](https://poser.pugx.org/rlanvin/php-rrule/downloads )](https://packagist.org/packages/rlanvin/php-rrule)
2015-06-26 21:49:52 +03:00
## Basic example
```php
use RRule\RRule;
$rrule = new RRule([
'FREQ' => 'MONTHLY',
'INTERVAL' => 1,
'DTSTART' => '2015-06-01',
'COUNT' => 6
]);
foreach ( $rrule as $occurrence ) {
2016-12-06 18:27:50 +02:00
echo $occurrence->format('D d M Y'),", ";
2015-06-26 21:49:52 +03:00
}
2016-12-06 18:27:50 +02:00
// Mon 01 Jun 2015, Wed 01 Jul 2015, Sat 01 Aug 2015, Tue 01 Sep 2015, Thu 01 Oct 2015, Sun 01 Nov 2015
2015-07-08 12:40:45 +03:00
echo $rrule->humanReadable(),"\n";
// monthly on the 1st of the month, starting from 01/06/2015, 6 times
2015-06-26 21:49:52 +03:00
```
2016-12-06 18:40:23 +02:00
Complete documentation and more examples are available in [the wiki ](https://github.com/rlanvin/php-rrule/wiki ).
2015-06-26 21:49:52 +03:00
## Requirements
2019-01-13 10:00:43 +00:00
- PHP >= 5.6
2015-07-08 12:40:45 +03:00
- [intl extension ](http://php.net/manual/en/book.intl.php ) is recommended for `humanReadable()` but not strictly required
2015-06-26 21:49:52 +03:00
## Installation
The recommended way is to install the lib [through Composer ](http://getcomposer.org/ ).
2016-12-06 18:40:23 +02:00
Simply run `composer require rlanvin/php-rrule` for it to be automatically installed and included in your `composer.json` .
2016-12-06 18:27:50 +02:00
2015-06-26 21:49:52 +03:00
Now you can use the autoloader, and you will have access to the library:
```php
require 'vendor/autoload.php';
```
2015-07-08 12:40:45 +03:00
## Documentation
2016-12-06 18:27:50 +02:00
Complete documentation is available in [the wiki ](https://github.com/rlanvin/php-rrule/wiki ).
You will also find useful information in the [RFC 5545 section 3.3.10 ](https://tools.ietf.org/html/rfc5545#section-3.3.10 ).
2015-07-08 12:40:45 +03:00
## Contribution
Feel free to contribute! Just create a new issue or a new pull request.
2015-06-26 21:49:52 +03:00
## Note
I started this library because I wasn't happy with the existing implementations
2015-07-01 12:23:39 +03:00
in PHP, so I thought it would be a good learning project to port the
2015-06-26 22:10:46 +03:00
python-dateutil rrule implementation into PHP.
2015-06-26 21:49:52 +03:00
2015-07-01 12:23:39 +03:00
The Python lib was a bit difficult to understand because the algorithms
2015-06-26 22:10:46 +03:00
are not commented and the variables are very opaque (I'm looking at
you `lno1wkst` ). I tried to comment and explain as much of the algorithm as possible
in this PHP port, so feel free to check the code if you're interested.
2015-06-26 21:49:52 +03:00
The lib differs from the python version in various aspects, notably in the
2015-07-01 12:23:39 +03:00
respect of the RFC. This version is a bit strictier and will not accept many
2015-06-26 21:49:52 +03:00
non-compliant combinations of rule parts, that the python version otherwise accepts.
There are also some additional features in this version.
## License
This library is released under the MIT License.