📈 Get insights about your Laravel or Lumen Project

Overview

Laravel Stats

Buy us a tree

Get insights about your Laravel or Lumen Project.

Screenshot

Installing

The easiest way to install the package is by using composer. The package requires PHP 7.3, Laravel 7.0 or higher or Lumen 7.0 or higher.

composer require "wnx/laravel-stats" --dev

The package will automatically register itself.

If you're using Lumen you have to manually register the Service Provider in your bootstrap/app.php file:

$app->register(\Wnx\LaravelStats\StatsServiceProvider::class);

Optionally, you can publish the config file in your Laravel applications with the following command:

php artisan vendor:publish --provider="Wnx\LaravelStats\StatsServiceProvider"

Usage

After installing you can generate the statistics by running the following Artisan Command.

php artisan stats

(Make sure you run php artisan config:clear before running the above command.)

The statistics are also available as JSON.

php artisan stats --json

If you want a more detailed report and see which classes have been grouped into which component, you can use the --verbose-option.

php artisan stats --verbose

The verbose option is available for the JSON format also.

php artisan stats --json --verbose

How does this package detect certain Laravel Components?

The package scans the files defined in the paths-array in the configuration file. It then applies Classifiers to those classes to determine which Laravel Component the class represents.

Component Classification
Controller Must be registered with a Route
Model Must extend Illuminate\Database\Eloquent\Model
Command Must extend Illuminate\Console\Command
Rule Must extend Illuminate\Contracts\Validation\Rule
Policy The Policy must be registered in your AuthServiceProvider
Middleware The Middleware must be registered in your Http-Kernel
Event Must use Illuminate\Foundation\Events\Dispatchable-Trait
Event Listener Must be registered for an Event in EventServiceProvider
Mail Must extend Illuminate\Mail\Mailable
Notification Must extend Illuminate\Notifications\Notification
Nova Action Must extend Laravel\Nova\Actions\Action
Nova Dashboard Must extend Laravel\Nova\Dashboard
Nova Filter Must extend Laravel\Nova\Filters\Filter
Nova Lens Must extend Laravel\Nova\Lenses\Lens
Nova Resource Must extend Laravel\Nova\Resource
Job Must use Illuminate\Foundation\Bus\Dispatchable-Trait
Migration Must extend Illuminate\Database\Migrations\Migration
Request Must extend Illuminate\Foundation\Http\FormRequest
Resource Must extend Illuminate\Http\Resources\Json\JsonResource or Illuminate\Http\Resources\Json\ResourceCollection
Seeder Must extend Illuminate\Database\Seeder
ServiceProvider Must extend Illuminate\Support\ServiceProvider
Blade Components Must extend Illuminate\View\Component
Custom Casts Must implement Illuminate\Contracts\Database\Eloquent\CastsAttributes or Illuminate\Contracts\Database\Eloquent\CastsInboundAttributes
Database Factory Must extend Illuminate\Database\Eloquent\Factory
Dusk Tests Must extend Laravel\Dusk\TestCase
BrowserKit Test Must extend Laravel\BrowserKitTesting\TestCase
PHPUnit Test Must extend PHPUnit\Framework\TestCase

Create your own Classifiers

If your application has it's own components you would like to see in laravel-stats you can create your own "Classifiers". Create your own Classifiers by implementing the Classifier-contract and adding the class to the stats.custom_component_classifier config array.

For example:

// app/Classifiers/RepositoryClassifier.php
<?php

namespace App\Classifiers;

use Wnx\LaravelStats\ReflectionClass;
use Wnx\LaravelStats\Contracts\Classifier;

class RepositoryClassifier implements Classifier
{
    public function name(): string
    {
        return 'Repositories';
    }

    public function satisfies(ReflectionClass $class): bool
    {
        return $class->isSubclassOf(\App\Repositories\BaseRepository::class);
    }

    public function countsTowardsApplicationCode(): bool
    {
        return true;
    }

    public function countsTowardsTests(): bool
    {
        return false;
    }
}
// config/stats.php
<?php
    ...
    'custom_component_classifier' => [
        \App\Classifiers\RepositoryClassifier::class
    ],
    ...

Share Metrics with the Laravel Community

You can optionally share your projects statistic by using the --share option.

php artisan stats --share

Your project statistics is shared anonymously with stats.laravelshift.com. In regular intervals the dashboard and charts on the site are updated with shared data from other Laravel projects.

To learn more about this feature, please check out PR #178.

Share statistic through CI

If you would like to share your project statistic in a CI environment you can use the --no-interaction and --name-options.

Use the following command in your CI script to share your project statistic automatically. (Update org/repo with the name of your application (eg. acme/podcasting-app))

php artisan stats --share --no-interaction --name=org/repo

If you're code is hosted on GitHub, you can integrate stats with GitHub Actions. Copy the following Workflow to .github/workflows/laravel-stats.yml. It will share data when a commit is pushed to the master branch. The Action automatically uses your GitHub repository name in the --name-option.

name: stats

on:
  push:
    branches:
      - master

jobs:
  stats:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 7.4
          tools: composer:v2

      - name: Install dependencies
        run: composer install --prefer-dist --no-interaction --no-suggest

      - name: Share Stats
        run: php artisan stats --share --name=$GITHUB_REPOSITORY --no-interaction

Inspect Data shared with the Community

If you would like to inspect the payload the command is sending to the API you can use the --dry-run and --payload options.

php artisan stats --share  --no-interaction  --name="org/repo" --dry-run --payload

Treeware

You're free to use this package, but if it makes it to your production environment you are required to buy the world a tree.

It’s now common knowledge that one of the best tools to tackle the climate crisis and keep our temperatures from rising above 1.5C is to plant trees. If you support this package and contribute to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.

You can buy trees here offset.earth/treeware

Read more about Treeware at treeware.earth

Running the tests

The package has tests written in phpunit. You can run them with the following command.

./vendor/bin/phpunit

Running the command in a local test project

If you're working on the package locally and want to just run the command in a demo project you can use the composer path-repository format. Add the following snippet to the composer.json in your demo project.

{
    "repositories": [
        {
            "type": "path",
            "url": "/path/to/laravel-stats/",
            "options": {
                "symlink": true
            }
        }
    ],
}

And "install" the package with composer require wnx/laravel-stats. The package should now be symlinked in your demo project.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Credits

License

This project is licensed under the MIT License - see the LICENSE file for details.

Comments
  • [Feature Request] Config option to include vendor classes

    [Feature Request] Config option to include vendor classes

    Could we include a config option to enable/disable the including of laravel classes inside vendor directory? And maybe display it in a separate table? We need for example to know the total number of service providers in the whole project, not just within the app layer, also artisan commands, and migrations. That would be helpful.. What do you think?

    feature request 
    opened by Omranic 18
  • ignore.files config should also work for paths

    ignore.files config should also work for paths

    The package currently ignores file paths which are set in the config. The ClassFinder set's the notName-method and thereby ignores file paths.

    I think it would be better if you can set file paths relative to the project root.

    open for contribution 
    opened by stefanzweifel 11
  • ErrorException :

    ErrorException : "continue" targeting switch is equivalent to "break"

    Hi there, I just installed your package and tried to run php artisan statsbut got:

    Captura de pantalla 2019-03-14 a la(s) 3 19 42 p  m

    I've added SebastianBergmann\PHPLOCto the 'ignored_namespaces' in config/stats.php without luck.

    Any tip will be very welcome, thanks.

    bug 
    opened by RicardoRamirezR 10
  • Issues on Laravel 8

    Issues on Laravel 8

    When I try to run

    PHP artisan stats
    

    I'm getting the next message:

    LogicException You must call one of in() or append() methods before iterating over a Finder.

    opened by devmaufh 8
  • Add Tests To Statistics

    Add Tests To Statistics

    How about adding a breakdown for Tests and any associated sub directories

    total 48
    drwxr-xr-x   8 merickson  staff   272B Sep  1 23:32 Assert
    drwxr-xr-x   6 merickson  staff   204B Sep  1 23:32 Browser
    -rw-r--r--   1 merickson  staff   1.8K Sep 17 19:15 DatabaseTestCase.php
    -rw-r--r--   1 merickson  staff   740B Sep  1 23:32 DuskTestCase.php
    drwxr-xr-x  11 merickson  staff   374B Sep  5 11:41 Feature
    -rw-r--r--   1 merickson  staff   146B Sep  1 23:32 FeatureTestCase.php
    drwxr-xr-x   3 merickson  staff   102B Sep  1 23:32 Mfour
    -rw-r--r--   1 merickson  staff   777B Sep  1 23:32 TestCase.php
    drwxr-xr-x   7 merickson  staff   238B Sep  1 23:32 Traits
    drwxr-xr-x  11 merickson  staff   374B Sep 17 14:14 Unit
    -rw-r--r--   1 merickson  staff   147B Sep  1 23:32 UnitTestCase.php
    drwxr-xr-x  15 merickson  staff   510B Sep  1 23:32 coverage
    -rw-r--r--   1 merickson  staff   339B Sep  1 23:32 helpers.php
    
    feature request 
    opened by mfour-merickson 8
  • ide helper conflict / error

    ide helper conflict / error

    If I have the _ide_helper.php in the directory, the following is produced. If I delete the file, all is good but obviously ide-helper doesn't work :-)

    ❯ art stats              
    PHP Fatal error:  Cannot declare class Artisan, because the name is already in use in /Users/merickson/Documents/code/laravel/l5-sandbox/_ide_helper.php on line 12949
    
                                                                        
      [Symfony\Component\Debug\Exception\FatalErrorException]           
      Cannot declare class Artisan, because the name is already in use  
    
    bug 
    opened by mfour-merickson 8
  • TypeError when running stats-command in EventListenerClassifier

    TypeError when running stats-command in EventListenerClassifier

     TypeError 
    
      ReflectionFunction::__construct(): Argument #1 ($function) must be of type Closure|string, array given
    
      at vendor/wnx/laravel-stats/src/Classifiers/EventListenerClassifier.php:65
         61▕         if (is_string($closure)) {
         62▕             return $closure;
         63▕         }
         64▕ 
      ➜  65▕         $reflection = new ReflectionFunction($closure);
         66▕ 
         67▕         return Arr::get($reflection->getStaticVariables(), 'listener');
         68▕     }
         69▕ 
    
          +2 vendor frames 
      3   [internal]:0
          Wnx\LaravelStats\Classifiers\EventListenerClassifier::Wnx\LaravelStats\Classifiers\{closure}()
    
          +2 vendor frames 
      6   [internal]:0
          Wnx\LaravelStats\Classifiers\EventListenerClassifier::Wnx\LaravelStats\Classifiers\{closure}("Illuminate\Database\Events\QueryExecuted")
    
    bug 
    opened by shijie1991 7
  • Unable to run laravel-stats when Swoole Extention is instaleld

    Unable to run laravel-stats when Swoole Extention is instaleld

    "wnx/laravel-stats": "^2.9" "laravel/sail": "^1.14", "laravel/framework": "^9.0",

    I am running on docker with laravel sail, after installing your package I run sail php artisan stats, and this returned

    ErrorException 
    
      file_get_contents(@swoole-src/library/functions.php): Failed to open stream: No such file or directory
    
      at vendor/phploc/phploc/src/Analyser.php:161
        157▕         if ($countTests) {
        158▕             $this->preProcessFile($filename);
        159▕         }
        160▕
      ➜ 161▕         $buffer = file_get_contents($filename);
        162▕         $this->collector->incrementLines(substr_count($buffer, "\n"));
        163▕         $tokens    = token_get_all($buffer);
        164▕         $numTokens = count($tokens);
        165▕
    
          +26 vendor frames 
      27  artisan:37
          Illuminate\Foundation\Console\Kernel::handle()
    
    bug 
    opened by jameswong3388 6
  • composer require fails with v2

    composer require fails with v2

    Hello,

    I've updated my app to L6 and it works well. PHP 7.3.

    But I can't install laravel-stats:

    → composer require "wnx/laravel-stats" --dev
    Using version ^2.0 for wnx/laravel-stats
    ./composer.json has been updated
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - Installation request for symfony/console (locked at v4.4.4) -> satisfiable by symfony/console[v4.4.4].
        - Conclusion: don't install phploc/phploc 4.0.0
        - Installation request for wnx/laravel-stats ^2.0 -> satisfiable by wnx/laravel-stats[v2.0.0].
        - Conclusion: don't install sebastian/version 3.0.0|install phploc/phploc 4.0.0
        - Conclusion: remove sebastian/version 3.0.0|install phploc/phploc 4.0.0
        - wnx/laravel-stats v2.0.0 requires phploc/phploc ~4.0|~5.0 -> satisfiable by phploc/phploc[4.0.0, 4.0.1, 5.0.0].
        - phploc/phploc 4.0.1 requires sebastian/version ^2.0 -> satisfiable by sebastian/version[2.0.0, 2.0.1].
        - phploc/phploc 5.0.0 requires sebastian/version ^2.0 -> satisfiable by sebastian/version[2.0.0, 2.0.1].
        - Can only install one of: sebastian/version[2.0.1, 3.0.0].
        - Can only install one of: sebastian/version[2.0.0, 3.0.0].
        - Installation request for sebastian/version (locked at 3.0.0) -> satisfiable by sebastian/version[3.0.0].
    
    
    Installation failed, reverting ./composer.json to its original content.
    

    Do you have an idea?

    Bests

    bug on hold 
    opened by sylouuu 6
  • Is laravel 5.5 absolutely required?

    Is laravel 5.5 absolutely required?

    Thought this was rad and would like to use it in my laravel app, but I am not yet at 5.5. Are you using features that only exist in 5.5 or can this be 5.*?

    on hold nice to have 
    opened by michaeljhopkins 6
  • Introduce Classifiers

    Introduce Classifiers

    This PR replaces "ComponentConfiguration" approach for detecting classes discovered in the application.

    The core concept is that every class will run through a list of "classifiers". Each classifier performs a set of checks to determine wether it satisfies the given class (ModelClassifier checks wether the given class extends Illuminate\Database\Eloquent\Model etc).

    This allows us to isolate checks required to indentify a component. MiddlewareClassifier is a nice example. To classify a middleware, we need to perform multiple checks (check HttpKernel, check local and global middlewares). By using this approach, logic to indentify a middleware is isolated in the MiddlewareClassifier class.

    🌵

    opened by jerguslejko 5
Releases(v2.10.0)
  • v2.10.0(Oct 29, 2022)

  • v2.9.2(Jul 5, 2022)

  • v2.9.1(May 31, 2022)

  • v2.9.0(Mar 22, 2022)

  • v2.8.1(Feb 22, 2022)

  • v2.8.0(Jan 19, 2022)

  • v2.7.0(Nov 26, 2021)

  • v2.6.0(Nov 20, 2021)

  • v2.5.2(May 2, 2021)

  • v2.5.1(Mar 11, 2021)

  • v2.5.0(Nov 20, 2020)

  • v2.4.1(Sep 29, 2020)

  • v2.4.0(Sep 8, 2020)

  • v2.3.0(Sep 3, 2020)

    I'm thrilled to release v2.3.0 of laravel-stats. 🎉

    A quick overview of what has changed in this version.

    • Support for Model Observers has been added. (#177, #128)
    • A new --share option has been added (see below for more information) #178
    • Support for Laravel 6 and PHPUnit 8 has been added back. (Was previously removed in v2.1.0)

    New --share option

    v2.3.0 comes with a new --share-option for the stats-command.

    By executing php artisan stats --share your project statistics are shared anonymously with the Laravel community. Your statistics will be combined with other Laravel projects to provide metrics available on stats.laravelshift.com.

    The stats command will never automatically share anything! Only when this option is used and you confirm the prompts will data be shared.

    What does this mean in detail?

    By executing php artisan stats --share you can opt-in to share the used components and its statistical numbers like "number of classes" and "lines of code per component" with the Laravel community on stats.laravelshift.com.

    Jason McCreary, the creator of Shift, and I developed this feature from an idea we had 2 years ago after Jason gave his "Laravel by the Numbers" talk at Laracon US 2018.

    Our goal is to collect and aggregate statistical data from Laravel projects and transform the raw data into an easy-to-read dashboard for the Laravel community.

    We hope it to make it easier for you as a developer to make decisions when crafting your Laravel projects. For example: "How many projects use Blade Components?" or "How many projects have a Models folder?"

    What is being shared?

    The request sent to the API contains:

    • the project name you've defined (used internally as a unique identifier)
    • a list of components and their statistical numbers in your projects. (e.g. controllers_lloc_per_method or phpunit_tests)

    Class names or code will never be shared. If you would like to see the exact payload which is sent to the API, you may use the --payload option. You may also use the --dry-run option to prevent sending a request to the API.

    For example, the following command will simulate sharing your project stats with the API and output the data to that would be sent:

    php artisan stats --share --payload --dry-run
    
    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Apr 4, 2020)

  • v2.1.1(Mar 3, 2020)

  • v2.1.0(Mar 3, 2020)

    Note: Due to underlying changes to the phploc-dependency, the numbers for "loc" and "lloc" in your project may change.

    Changed

    • Run test suite against Laravel 7 #170

    Removed

    • Removed support to detect Illuminate\Http\Resources\Json\Resource as an API resource #170
    • Dropped support for Laravel 5.8 #170
    • Dropped support for Laravel 6.0 #170
    • Dropped support for PHP 7.2 #170
    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(Feb 22, 2020)

  • v2.0.1(Feb 22, 2020)

    Added

    • Add Laravel Nova Dashboard Classifier #158, #159
    • Add php-cs-fixer GitHub Actions workflow #160

    Changed

    • Test Package against Laravel 6.0 #155
    • Set declare(strict_types=1) everywhere #161
    • Changed Version Contraints in composer.json to support Laravel 7.0
    • Changed Version Contraints for phpunit/phpunit to support 9.0

    Fixed

    • Make ControllerClassifier compatible with Lumen 6.0 2462fe
    • Fix an Issue in ResourceClassifier where not all kinds of Resources were correctly identified as API Resources #156
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Sep 1, 2019)

    Almost 2 years after the first major release of stats I'm thrilled to release 2.0. 🎉

    Under the hood a lot has changed: Many internal classes have been rewritten to pave the path for new cool features (more about them soon). Performance for bigger projects with more than 1000 classes has also been improved, by using more caches internally.

    On the side of breaking changes, support for older PHP, Laravel and Lumen versions has been removed. Also checkout the "Upgrade Guide" below to see, if your apps works as intended with version 2.0.

    New Features

    Differentiation between Application Code and Test Code

    One of the statistics stats shows you, is the ratio between application code and test code. The previous versions had a naive approach of determining if a class belongs to the application or test code (If the class wasn't a test, it counted towards the application code).
    In 2.0, each Component can now be explicitly be configured to count towards application or test code.

    For example all Laravel Nova Classifiers (Actions, Filters, Lenses and Resources) have been configured to NOT count towards the application AND NOT towards the test code.
    If you disagree with this decision, feel free to open an issue. Im open for discussions!

    Verbose Mode

    Previously, it was impossible to see which classes have been classified as "Others". Version 2.0 now supports a verbose option – triggered by adding -v or --verbose to the command call – which will list all recognized classes for a component.

    Example output for a fresh Laravel 6.0 app:

    php artisan stats --verbose
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    | Name                       |                    Classes | Methods | Methods/Class | LoC | LLoC | LLoC/Method |
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    | Middlewares                |                          7 |       2 |          0.29 | 146 |   26 |          13 |
    | - App\Http\Middleware\VerifyCsrfToken                   |       0 |             0 |  24 |    4 |           0 |
    | - App\Http\Middleware\RedirectIfAuthenticated           |       1 |             1 |  26 |    5 |           5 |
    | - App\Http\Middleware\TrimStrings                       |       0 |             0 |  18 |    3 |           0 |
    | - App\Http\Middleware\Authenticate                      |       1 |             1 |  21 |    3 |           3 |
    | - App\Http\Middleware\TrustProxies                      |       0 |             0 |  23 |    5 |           0 |
    | - App\Http\Middleware\CheckForMaintenanceMode           |       0 |             0 |  17 |    3 |           0 |
    | - App\Http\Middleware\EncryptCookies                    |       0 |             0 |  17 |    3 |           0 |
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    | Migrations                 |                          3 |       6 |             2 | 103 |   31 |        5.17 |
    | - CreatePasswordResetsTable                             |       2 |             2 |  32 |    8 |           4 |
    | - CreateUsersTable                                      |       2 |             2 |  36 |   12 |           6 |
    | - CreateFailedJobsTable                                 |       2 |             2 |  35 |   11 |         5.5 |
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    | Models                     |                          1 |       0 |             0 |  39 |    8 |           0 |
    | - App\User                                              |       0 |             0 |  39 |    8 |           0 |
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    | Seeders                    |                          1 |       1 |             1 |  16 |    1 |           1 |
    | - DatabaseSeeder                                        |       1 |             1 |  16 |    1 |           1 |
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    | Service Providers          |                          5 |       9 |           1.8 | 186 |   28 |        3.11 |
    | - App\Providers\AppServiceProvider                      |       2 |             2 |  28 |    2 |           1 |
    | - App\Providers\AuthServiceProvider                     |       1 |             1 |  30 |    5 |           5 |
    | - App\Providers\EventServiceProvider                    |       1 |             1 |  34 |    7 |           7 |
    | - App\Providers\RouteServiceProvider                    |       4 |             4 |  73 |    9 |        2.25 |
    | - App\Providers\BroadcastServiceProvider                |       1 |             1 |  21 |    5 |           5 |
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    | PHPUnit Tests              |                          3 |       2 |          0.67 |  50 |   12 |           6 |
    | - Tests\TestCase                                        |       0 |             0 |  10 |    3 |           0 |
    | - Tests\Unit\ExampleTest                                |       1 |             1 |  19 |    4 |           4 |
    | - Tests\Feature\ExampleTest                             |       1 |             1 |  21 |    5 |           5 |
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    | Other                      |                          9 |      11 |          1.22 | 410 |   61 |        5.55 |
    | - App\Console\Kernel                                    |       2 |             2 |  42 |    6 |           3 |
    | - App\Exceptions\Handler                                |       2 |             2 |  51 |    7 |         3.5 |
    | - App\Http\Controllers\Controller                       |       0 |             0 |  13 |    6 |           0 |
    | - App\Http\Controllers\Auth\ForgotPasswordController    |       1 |             1 |  32 |    5 |           5 |
    | - App\Http\Controllers\Auth\LoginController             |       1 |             1 |  39 |    6 |           6 |
    | - App\Http\Controllers\Auth\ResetPasswordController     |       1 |             1 |  39 |    6 |           6 |
    | - App\Http\Controllers\Auth\RegisterController          |       3 |             3 |  72 |   11 |        3.67 |
    | - App\Http\Controllers\Auth\VerificationController      |       1 |             1 |  41 |    8 |           8 |
    | - App\Http\Kernel                                       |       0 |             0 |  81 |    6 |           0 |
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    +----------------------------+----------------------------+---------+---------------+-----+------+-------------+
    | Total                      |                         29 |      31 |          1.07 | 950 |  167 |        5.39 |
    +-------------------- Code LLoC: 155 • Test LLoC: 12 • Code/Test Ratio: 1:0.1 • Routes: 2 +------+-------------+
    

    Filter output by Components

    It's now possible to filter the output for certain components.

    php artisan stats --components=Migrations,Models
    +------------+---------+---------+---------------+-----+------+-------------+
    | Name       | Classes | Methods | Methods/Class | LoC | LLoC | LLoC/Method |
    +------------+---------+---------+---------------+-----+------+-------------+
    | Migrations |       3 |       6 |             2 | 103 |   31 |        5.17 |
    | Models     |       1 |       0 |             0 |  39 |    8 |           0 |
    +------------+---------+---------+---------------+-----+------+-------------+
    | Total      |      29 |      31 |          1.07 | 950 |  167 |        5.39 |
    +--- Code LLoC: 155 • Test LLoC: 12 • Code/Test Ratio: 1:0.1 • Routes: 2 ---+
    

    Upgrade Guide

    Update configuration file

    Impact: All users, Effort: Low

    Laravel 6.0 comes with a new tests/bootstrap.php file. If you have an existing app which has been updated to Laravel 6.0, add the file to the exclude-key in config/stats.php to improve the performance of artisan stats.

        'exclude' => [
    +        base_path('tests/bootstrap.php'),
            // base_path('app/helpers.php'),
            // base_path('app/Services'),
        ],
    

    Update Custom Component Classifiers

    Impact: Moderate, Effort: Moderate

    The Classifier-contract has been updated:

    • Return Type Hints have been declared for all methods in the contract.
    • The getName() method has been renamed to name().
    • The countsTowardsApplicationCode() has been added. The method must return a boolean and indicates, if the given component should count towards the application code. This piece of information is used in the calculation of the "Code to Test ratio".
    • The countsTowardsTests() has been added. The method must return a boolean and indicates, if the given component should count towards the test code. This piece of information is used in the calculation of the "Code to Test ratio".

    If you've defined your own Custom Components, you have to update your implementations to meet the new criterias.

    Source code(tar.gz)
    Source code(zip)
  • v1.9.1(Mar 18, 2019)

  • v1.9.0(Mar 17, 2019)

  • v1.8.3(Mar 18, 2019)

  • v1.8.1(Feb 26, 2019)

  • v1.8.0(Oct 20, 2018)

  • v1.7.2(Aug 29, 2018)

  • v1.7.0(Mar 30, 2018)

  • v1.6.0(Feb 7, 2018)

  • v1.5.0(Feb 5, 2018)

  • v1.4.0(Dec 2, 2017)

Owner
Stefan Zweifel
Full Stack Developer working with Laravel, Vue.js, Tailwind CSS and alpine.js.
Stefan Zweifel
An un-offical API wrapper for logsnag.com to get notifications and track your project events

An un-offical API wrapper for logsnag.com to get notifications and track your project events

David Oti 3 Oct 15, 2022
Lumen on Docker - Skeleton project with Nginx, MySQL & PHP 8 | Aws ECS, Google Kubernates, Azure Container Engine

Docker infrastructure for Lumen Description Microservice Lumen is a starting skeleton based on Docker and Lumen Framework. This project helps to devel

Fabrizio Cafolla 218 Sep 25, 2022
urldecode'ing of all HTTP parameters in Lumen project

Request UrlDecode Description This package is intended to perform urldecode of all HTTP parameters in Lumen project. Lumen for some reason does not do

null 1 Dec 13, 2021
salah eddine bendyab 18 Aug 17, 2021
Roach-example-project - Example project to demonstrate how to use RoachPHP in a Laravel project.

Example repository to illustrate how to use roach-php/laravel in a Laravel app. Check app/Spiders/FussballdatenSpider.php for an example spider that c

Kai Sassnowski 11 Dec 15, 2022
ShellHacks 2021 Project: URide is a carpooling app for College students to get to and from campus

ShellHacks 2021 Project: URide is a carpooling app for College students to get to and from campus. Focused on scheduling it matches you to students nearby with similar schedules to alleviate campus parking and emissions.

Kayla Marcantonio 2 Sep 27, 2021
Enforce that your classes get only instantiated by the factories you define!

Enforce that your classes get only instantiated by the factories you define!

null 3 Nov 15, 2021
Get a grip on your finances.

Budget Budget is an open-source web application that helps you keep track of your finances. You can use Budget by hosting it yourself, or using the in

Daniël 836 Dec 29, 2022
Project template for starting your new project based on the Sulu content management system

Sulu is a highly extensible open-source PHP content management system based on the Symfony framework. Sulu is developed to deliver robust multi-lingua

Sulu CMS 188 Dec 28, 2022
A helpful Laravel package to help me get started in Laravel projects quicker.

Launchpad A helpful Laravel package to help me get started in Laravel projects quicker. This is still a work in progress, so use at your own risk! CLI

Steve McDougall 13 Jun 15, 2023
Hprose RPC 服务 in Laravel/Lumen

基于 hprose/hprose-php 开发的Laravel扩展:whereof/laravel-hprose

wangzhiqiang 6 Mar 18, 2022
Empower your business to accept payments globally, earn rewards and invest in crypto with lazerpay laravel sdk in your laravel project.

Lazerpay Laravel Package pipedev/lazerpay is a laravel sdk package that access to laravel api Installation PHP 5.4+ and Composer are required. To get

Muritala David 24 Dec 10, 2022
Laravel-Weather let you get weather info from qweather.com

Laravel Weather Weather info system for Laravel. Installing composer require layoute/laravel-weather -vvv Configuration and Migrations php artisan ven

Layoute 1 May 26, 2022
The easiest way to get started with event sourcing in Laravel

Event sourcing for Artisans ?? This package aims to be the entry point to get started with event sourcing in Laravel. It can help you with setting up

Spatie 591 Jan 4, 2023
Simple app for geoip - Lumen GeoIP Service

Lumen GeoIP Service Requirements PHP >= 8 Required packages: https://github.com/maxmind/GeoIP2-php Install Install Composer packages: composer install

Artem Bakulin 0 Mar 19, 2022
Dispatcher is a Laravel artisan command scheduling tool used to schedule artisan commands within your project so you don't need to touch your crontab when deploying.

Dispatcher Dispatcher allows you to schedule your artisan commands within your Laravel project, eliminating the need to touch the crontab when deployi

Indatus 1.1k Dec 21, 2022
Get mobile app version and other related data from Google Play Store, Apple App Store and Huawei AppGallery

Mobile App Version Get mobile app version and other related data from Google Play Store, Apple App Store and Huawei AppGallery. Installation Add to co

Omer Salaj 11 Mar 15, 2022