julioserpone/sla-manager
A PHP package for calculating & tracking the Service Level Agreement completion timings
Maintainers
Fund package maintenance!
Requires
- php: ^8.0
- cmixin/enhanced-period: ^1.2
- illuminate/collections: ^8|^9|^10|^11
- nesbot/carbon: ^2
- spatie/period: ^2
Requires (Dev)
- laravel/pint: ^1.0
- pestphp/pest: ^1.21
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^9.0
- spatie/invade: ^1.1
- spatie/pest-plugin-test-time: ^1.1
Suggests
None
Provides
None
Conflicts
None
Replaces
None
MIT f36849d9a77d11096da5d36b54b2fe95fc066550
- Julio CΓ©sar HΓ©rnandez <juliohernandezs.woop@gmail.com>
This package is auto-updated.
Last update: 2026-06-25 00:08:57 UTC
README
π Latest Version on Packagist
π Total Downloads
π GitHub Actions
A PHP package to calculate and track Service Level Agreement completion times.
Inspired from the sla-timer pack.
Features
- π Easy schedule building
- βΌοΈ Defined breaches
- π Holiday & Paused Durations
Installation
You can install the sla-manager via composer:
composer require julioserpone/sla-manager
Getting Started
The best place to get started with SLA timer is to head over to the β¨ SLA Timer Getting Started Documentation.
Example Usage
To create a new SLA Timer, we can start by defining our SLA Schedule:
require 'vendor/autoload.php'; use JulioSerpone\SlaManager\SLA; use JulioSerpone\SlaManager\SLABreach; use JulioSerpone\SlaManager\SLASchedule; /** * Create a new SLA between 9am and 5:30pm weekdays */ $sla = SLA::fromSchedule( SLASchedule::create()->from('09:00:00')->to('17:30:00') ->onWeekdays() );
We can define out breaches by calling the addBreaches method on our SLA
/** * Define two breaches, one at 24 hours, and the next at 100 hours */ $sla->addBreaches([ new SLABreach('First Response', '24h'), new SLABreach('Resolution', '100h'), ]);
Now that our SLA Schedule and SLA Breaches are defined, all we have to do is give our subject "creation time" β or our SLA start time β to either the status method, or the duration method.
// Given the time now is 14:00:00 29-07-2022 $status = $sla->status('05:35:40 25-07-2022'); // SLAStatus $status->breaches; // [SLABreach] [0: { First Response } ] $duration = $sla->duration('05:35:40 25-07-2022'); // CarbonInterval $duration->forHumans(); // 1 day 15 hours
Testing
composer test
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.
