1
0
mirror of https://github.com/rlanvin/php-rrule.git synced 2024-11-29 06:24:10 +01:00
php-rrule/README.md

101 lines
3.0 KiB
Markdown
Raw Normal View History

2015-06-26 16:02:29 +02:00
# RRULE for PHP
2015-06-26 21:10:46 +02:00
Lightweight and fast implementation of recurrence rules for PHP (RFC 5545), to easily work with recurring dates and events (such as in a calendar).
This library is heavily based on [python-dateutil](https://labix.org/python-dateutil).
2015-06-26 20:49:52 +02:00
[![Build Status](https://travis-ci.org/rlanvin/php-rrule.svg?branch=master)](https://travis-ci.org/rlanvin/php-rrule)
2016-03-23 17:49:37 +01:00
[![Latest Stable Version](https://poser.pugx.org/rlanvin/php-rrule/v/stable)](https://packagist.org/packages/rlanvin/php-rrule)
2015-06-26 20:49:52 +02:00
## Basic example
```php
use RRule\RRule;
$rrule = new RRule([
'FREQ' => 'MONTHLY',
'INTERVAL' => 1,
'DTSTART' => '2015-06-01',
'COUNT' => 6
]);
foreach ( $rrule as $occurrence ) {
echo $occurrence->format('D d M Y'),"\n";
}
// will output:
// 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 11:40:45 +02:00
echo $rrule->humanReadable(),"\n";
// monthly on the 1st of the month, starting from 01/06/2015, 6 times
2015-06-26 20:49:52 +02:00
```
Complete doc is available in [the wiki](https://github.com/rlanvin/php-rrule/wiki).
## Requirements
- PHP >= 5.3
2015-07-08 11:40:45 +02:00
- [intl extension](http://php.net/manual/en/book.intl.php) is recommended for `humanReadable()` but not strictly required
2015-06-26 20:49:52 +02:00
## Installation
The recommended way is to install the lib [through Composer](http://getcomposer.org/).
2016-03-02 08:48:36 +01:00
Just add this to your `composer.json` file (change the version by the release you want, or use dev-master for the development version):
2015-06-26 20:49:52 +02:00
```JSON
{
"require": {
2016-03-02 08:48:36 +01:00
"rlanvin/php-rrule": "1.*"
2015-06-26 20:49:52 +02:00
}
}
```
Then run `composer install` or `composer update`.
Or just run `composer require "rlanvin/php-rrule" "1.*"` for it to be automatically installed and included in your `composer.json`
2015-06-26 20:49:52 +02:00
Now you can use the autoloader, and you will have access to the library:
```php
<?php
require 'vendor/autoload.php';
```
2016-03-23 11:04:41 +01:00
### Alternative method (not recommended)
2015-06-26 20:49:52 +02:00
2016-03-23 11:04:41 +01:00
- Download [the latest release](https://github.com/rlanvin/php-rrule/releases/latest)
- Put the files in a folder that is autoloaded, or `inclure` or `require` them
2016-03-02 08:48:36 +01:00
2015-07-08 11:40:45 +02:00
## Documentation
Complete doc is available in [the wiki](https://github.com/rlanvin/php-rrule/wiki).
## Contribution
Feel free to contribute! Just create a new issue or a new pull request.
2015-06-26 20:49:52 +02:00
## Note
I started this library because I wasn't happy with the existing implementations
2015-07-01 11:23:39 +02:00
in PHP, so I thought it would be a good learning project to port the
2015-06-26 21:10:46 +02:00
python-dateutil rrule implementation into PHP.
2015-06-26 20:49:52 +02:00
2015-07-01 11:23:39 +02:00
The Python lib was a bit difficult to understand because the algorithms
2015-06-26 21:10:46 +02: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 20:49:52 +02:00
The lib differs from the python version in various aspects, notably in the
2015-07-01 11:23:39 +02:00
respect of the RFC. This version is a bit strictier and will not accept many
2015-06-26 20:49:52 +02: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.