CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

19 April, 2022

PHP Progress Library to Track User Progress

 Programing Coderfunda     April 19, 2022     Laravel, Packages     No comments   

 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:

1use Mtownsend\Progress\Progress;
2use Mtownsend\Progress\Step;
3 
4$step1 = (new Step('https://marktownsend.rocks', 'Portfolio Site'))->url();
5$step2 = (new Step(4, 'Bronze Level Developer'))->integer()->between(1, 5);
6$progress = (new Progress($step1, $step2));
7 
8var_dump($progress->get());
9 
10/*
11array(7) {
12 'total_steps' => int(2)
13 'percentage_complete' => double(100)
14 'percentage_incomplete' => double(0)
15 'steps_complete' => int(2)
16 'steps_incomplete' => int(0)
17 'complete_step_names' => array(2) {
18 [0] =>
19 string(14) "Portfolio Site"
20 [1] =>
21 string(22) "Bronze Level Developer"
22 }
23 'incomplete_step_names' => array(0) {}
24}
25*/

As you can see, the above example’s progress is 100% because all of the data passed to each Step passes the assertion test.

Let’s say the user hadn’t reached “Bronze Level Developer” yet; you might dynamically generate the progress instance like so:

1use Mtownsend\Progress\Progress;
2use Mtownsend\Progress\Step;
3 
4$developerLevel = 0;
5 
6$step1 = (new Step('https://marktownsend.rocks', 'Portfolio Site'))->url();
7$step2 = (new Step($developerLevel, 'Bronze Level Developer'))->integer()->between(1, 5);
8 
9$progress = (new Progress($step1, $step2));
10 
11var_dump($progress->get());
12 
13/*
14array(7) {
15 'total_steps' => int(2)
16 'percentage_complete' => double(50)
17 'percentage_incomplete' => double(50)
18 'steps_complete' => int(1)
19 'steps_incomplete' => int(1)
20 'complete_step_names' => array(1) {
21 [0] => string(14) "Portfolio Site"
22 }
23 'incomplete_step_names' => array(1) {
24 [1] => string(22) "Bronze Level Developer"
25 }
26}
27*/

The Progress library uses beberlei/assert under the hood. Thus you have full access to the assert library methods. In the above example, step two must be an integer between one and five, for example.

You can also assert if an individual step passes using the passed() method:

1<br></br>// Failing example
2$developerLevel = 0;
3 
4$step2 = (new Step($developerLevel, 'Bronze Level Developer'))->integer()->between(1, 5);
5 
6var_dump($step2->passed()); // bool(false)
7 
8// Passing
9$developerLevel = 1;
10 
11$step2 = (new Step($developerLevel, 'Bronze Level Developer'))->integer()->between(1, 5);
12 
13var_dump($step2->passed());
14// bool(true)

You can learn more about this package, get full installation instructions, and view the source code on GitHub at mtownsend5512/progress.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Write API Integrations in Laravel and PHP Projects with Saloon
    Write API Integrations in Laravel and PHP Projects with Saloon Saloon  is a Laravel/PHP package that allows you to write your API integratio...
  • Features CodeIgniter
    Features CodeIgniter There is a great demand for the CodeIgniter framework in PHP developers because of its features and multiple advan...
  • Laravel Breeze with PrimeVue v4
    This is an follow up to my previous post about a "starter kit" I created with Laravel and PrimeVue components. The project has b...
  • Fast Excel Package for Laravel
      Fast Excel is a Laravel package for importing and exporting spreadsheets. It provides an elegant wrapper around Spout —a PHP package to ...
  • Send message via CANBus
    After some years developing for mobile devices, I've started developing for embedded devices, and I'm finding a new problem now. Th...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (68)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

Loading...

Laravel News

Loading...

Copyright © CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda