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

Related Posts:

  • Firebase Cloud Messaging for Laravel Larafirebase is a package by Gentrit Abazi that provides sending push notifications and custom messages with Firebase in Laravel applications. T… Read More
  • Organize Laravel Applications With Actions The Laravel actions package provides a new way to organize your Laravel applications’ logic by focusing on actions. Using this technique, you ca… Read More
  • Squire: Static Eloquent Model Library Squire is a library of prebuilt static Eloquent models for common fixture data. It provides information about countries, currencies, airports,… Read More
  • OpenAPI Initializer OpenAPI Initializer is a Laravel package that provides a straightforward command to scaffold an OpenAPI spec file. Once you install the package,… Read More
  • Generate a Postman Collection from Laravel Routes Laravel API to Postman is a package by Andreas Elia that allows you to automatically generate a Postman collection based on your app’s API route… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Spring boot app (error: method getFirst()) failed to run at local machine, but can run on server
    The Spring boot app can run on the online server. Now, we want to replicate the same app at the local machine but the Spring boot jar file f...
  • Log activity in a Laravel app with Spatie/Laravel-Activitylog
      Requirements This package needs PHP 8.1+ and Laravel 9.0 or higher. The latest version of this package needs PHP 8.2+ and Laravel 8 or hig...
  • Laravel auth login with phone or email
          <?php     Laravel auth login with phone or email     <? php     namespace App \ Http \ Controllers \ Auth ;         use ...
  • Vue3 :style backgroundImage not working with require
    I'm trying to migrate a Vue 2 project to Vue 3. In Vue 2 I used v-bind style as follow: In Vue 3 this doesn't work... I tried a...
  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh
    I had follow these steps to install an configure firebase to my cordova project for cloud messaging. https://medium.com/@felipepucinelli/how...

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)

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024
  • pyspark XPath Query Returns Lists Omitting Missing Values Instead of Including None - 9/20/2024
  • SQL REPL from within Python/Sqlalchemy/Psychopg2 - 9/20/2024
  • MySql Explain with Tobias Petry - 9/20/2024
  • How to combine information from different devices into one common abstract virtual disk? [closed] - 9/20/2024

Laravel News

  • Chargebee Starter Kit for Billing in Laravel - 5/20/2025
  • Streamline Pipeline Cleanup with Laravel's finally Method - 5/18/2025
  • Validate Controller Requests with the Laravel Data Package - 5/19/2025
  • Deployer - 5/18/2025
  • Transform JSON into Typed Collections with Laravel's AsCollection::of() - 5/18/2025

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