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

  • Spring Security PreAuthorize using multi-value enum
    I have a annotation that is declared as follows. @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @PreAuthorize("hasA...
  • Running PHPStan on max with Laravel
      Over the last few years static analysis in PHP, and more specifically Laravel, has become more and more popular. With more people adopting...
  • Generalization
    Generalization Generalization is like a bottom-up approach in which two or more entities of lower-level levels combine to form a higher-leve...
  • Vue.js Events
      In Vue.js, Events are used to respond to an action. Suppose, you have to build a dynamic website using Vue.js then you'll most likely ...
  • Your requirements could not be resolved to an installable set of packages.
    Problems : Your requirements could not be resolved to an installable set of packages. Solution :  Run this command: composer install --ignor...

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 (69)
  • 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

  • July (4)
  • 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