Progress is a PHP package to determine steps and progress with an expressive, object-oriented API:

This progress package is a simple way of taking multiple steps in a process and using them to create a progression system. You can define your steps through an expressive and simple API and let this package handle the heavy lifting. The result is a delightfully easy to use steps-and-progression system.

This library works by creating a Progress instance with all the steps required to reach 100% progression. This library then asserts which steps are completed and returns the results:

use Mtownsend\Progress\Progress;
use Mtownsend\Progress\Step;

$step1 = (new Step('https://marktownsend.rocks', 'Portfolio Site'))->url();
$step2 = (new Step(4, 'Bronze Level Developer'))->integer()->between(1, 5);
$progress = (new Progress($step1, $step2));

var_dump($progress->get());

/*
array(7) {
  'total_steps' => int(2)
  'percentage_complete' => double(100)
  'percentage_incomplete' => double(0)
  'steps_complete' => int(2)
  'steps_incomplete' => int(0)
  'complete_step_names' => array(2) {
    [0] =>
    string(14) "Portfolio Site"
    [1] =>
    string(22) "Bronze Level Developer"
  }
  'incomplete_step_names' =>  array(0) {}
}
*/

#php #web-development #programming #developer

PHP Progress Library to Track User Progress
2.40 GEEK