Period is PHP's missing time range API. Based on ideas from Resolving Feature Envy in the Domain by Mathias Verraes, this package extends the concept to cover all basic operations regarding time ranges.
- Represents Interval, Datepoint, Duration and Collection as value objects
- Exposes named constructors to ease object creation
- Covers all basic manipulations related to time range
- Enables working with simple or complex time ranges logic
- Fully documented
Full documentation can be found at period.thephpleague.com.
You need PHP >= 7.2.0 but the latest stable version of PHP is recommended.
Period using Composer.
$ composer require league/period
or download the library and:
- use any other PSR-4 compatible autoloader.
- use the bundle autoloader script as shown below:
require 'path/to/period/repo/autoload.php'; use League\Period\Datepoint; Datepoint::create('2012-05-23')->getDay()->getDateInterval(); //returns new DateInterval('P1D');
path/to/period/repo represents the path where the library was extracted.
- a coding style compliance test suite using PHP CS Fixer.
- a code analysis compliance test suite using PHPStan.
- a PHPUnit test suite
- an optional mutation test run
To run the tests, run the following command from the project folder.
$ composer test
Contributions are welcome and will be fully credited. Please see CONTRIBUTING and CONDUCT for details.
If you discover any security related issues, please email firstname.lastname@example.org instead of using the issue tracker.
Please see CHANGELOG for more information on what has changed recently.
The MIT License (MIT). Please see LICENSE for more information.