https://github.com/niclasvaneyk/laravel-route-linter
Statically validate your route definitions
https://github.com/niclasvaneyk/laravel-route-linter
Last synced: 2 months ago
JSON representation
Statically validate your route definitions
- Host: GitHub
- URL: https://github.com/niclasvaneyk/laravel-route-linter
- Owner: NiclasvanEyk
- License: mit
- Created: 2023-08-24T20:48:45.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-09T08:43:47.000Z (over 1 year ago)
- Last Synced: 2024-05-02T03:11:06.284Z (about 1 year ago)
- Language: PHP
- Size: 87.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Statically validate your route definitions
## DISCLAIMER
This is repository is very much work in progress. I have decided to not publish this as its own package, but rather prepare a PR to Larastan. This will happen when proper reporting of unknown routes and route parameters is implemented.
[](https://packagist.org/packages/niclasvaneyk/laravel-route-linter)
[](https://github.com/niclasvaneyk/laravel-route-linter/actions?query=workflow%3Arun-tests+branch%3Amain)
[](https://github.com/niclasvaneyk/laravel-route-linter/actions?query=workflow%3A"Fix+PHP+code+style+issues"+branch%3Amain)
[](https://packagist.org/packages/niclasvaneyk/laravel-route-linter)Finds errors or potentially misleading definitions when registering Laravel routes.
Given the following routes file:```php
Route::get('/articles/{slug}', function (Article $article) {
return view('articles.detail', ['article' => $article]);
});Route::get('/articles/new', function () {
return view('articles.new');
});Route::post('/articles/{slug}/comments/{id}', function (string $id, string $slug) {
// ...
});
```you can run this command to find potential issues:
```
php artisan route:lintERROR Potential problems found:
ConfusingImplicitPathParameterBindings
The controller function parameters of POST articles/{slug}/comments/{id} are misleading. Their order in the path is ["slug", "id"], but in the controller the order is ["id", "slug"]. See https://laravel.com/docs/routing#required-parameters for more information.RouteShadowed
The route GET|HEAD articles/new clashes with the existing route GET|HEAD articles/{slug}. Register it earlier to prevent this issue.
```## Support us
[
](https://spatie.be/github-ad-click/laravel-route-linter)
We invest a lot of resources into creating [best in class open source packages](https://spatie.be/open-source). You can support us by [buying one of our paid products](https://spatie.be/open-source/support-us).
We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on [our contact page](https://spatie.be/about-us). We publish all received postcards on [our virtual postcard wall](https://spatie.be/open-source/postcards).
## Installation
You can install the package via composer:
```bash
composer require niclasvaneyk/laravel-route-linter
```You can publish and run the migrations with:
```bash
php artisan vendor:publish --tag="laravel-route-linter-migrations"
php artisan migrate
```You can publish the config file with:
```bash
php artisan vendor:publish --tag="laravel-route-linter-config"
```This is the contents of the published config file:
```php
return [
];
```Optionally, you can publish the views using
```bash
php artisan vendor:publish --tag="laravel-route-linter-views"
```## Usage
```php
$laravelRouteLinter = new NiclasVanEyk\LaravelRouteLinter();
echo $laravelRouteLinter->echoPhrase('Hello, NiclasVanEyk!');
```## Testing
```bash
composer test
```## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) for details.
## Security Vulnerabilities
Please review [our security policy](../../security/policy) on how to report security vulnerabilities.
## Credits
- [Niclas van Eyk](https://github.com/NiclasVanEyk)
- [All Contributors](../../contributors)## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.