1. Go to this page and download the library: Download zero-to-prod/laravel-rector library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
zero-to-prod / laravel-rector example snippets
use Rector\Config\RectorConfig;
use ZeroToProd\LaravelRector\Rector\AddReadonlyToClassWithTraitRector;
use ZeroToProd\LaravelRector\Rector\AddTypeToConstOnReadonlyClassRector;
use ZeroToProd\LaravelRector\Rector\CollapseSingleLineDocblockRector;
use ZeroToProd\LaravelRector\Rector\EnforceControllerSuffixRector;
use ZeroToProd\LaravelRector\Rector\EnforceInvokableControllerRector;
use ZeroToProd\LaravelRector\Rector\EnforceInvokableControllerRouteRector;
use ZeroToProd\LaravelRector\Rector\EnforceRegisteredClassRector;
use ZeroToProd\LaravelRector\Rector\ForbidAttributedClassDependencyRector;
use ZeroToProd\LaravelRector\Rector\ForbidBladeAttributeValueRector;
use ZeroToProd\LaravelRector\Rector\ForbidClassDependencyRector;
use ZeroToProd\LaravelRector\Rector\ForbidClassUsageRector;
use ZeroToProd\LaravelRector\Rector\ForbidCommentPhraseRector;
use ZeroToProd\LaravelRector\Rector\ForbidDuplicateBladeElementRector;
use ZeroToProd\LaravelRector\Rector\ForbidKeywordUsageRector;
use ZeroToProd\LaravelRector\Rector\ForbidNamespaceDependencyRector;
use ZeroToProd\LaravelRector\Rector\RenameParamToMatchTypeExactCaseRector;
return RectorConfig::configure()
->withPaths([
__DIR__.'/app',
__DIR__.'/routes',
__DIR__.'/tests',
])
->withRules([
AddReadonlyToClassWithTraitRector::class,
AddTypeToConstOnReadonlyClassRector::class,
CollapseSingleLineDocblockRector::class,
EnforceControllerSuffixRector::class,
EnforceInvokableControllerRector::class,
EnforceInvokableControllerRouteRector::class,
EnforceRegisteredClassRector::class,
ForbidAttributedClassDependencyRector::class,
ForbidBladeAttributeValueRector::class,
ForbidClassDependencyRector::class,
ForbidClassUsageRector::class,
ForbidCommentPhraseRector::class,
ForbidDuplicateBladeElementRector::class,
ForbidKeywordUsageRector::class,
ForbidNamespaceDependencyRector::class,
RenameParamToMatchTypeExactCaseRector::class,
]);
diff
-// Route::get('/user', UserShow::class);
+// Route::get('/user', UserShowController::class);
-readonly class UserShow
+readonly class UserShowController
{
public function __invoke(User $User): View
{
return view('user.show', ['user' => $User]);
}
}
diff
// Route::get('/user', UserShow::class);
+// TODO: Class "UserShow" is the controller for route "GET /user" and does not end in Controller. Rename it UserShowController.
readonly class UserShow
{
public function __invoke(User $User): View
{
return view('user.show', ['user' => $User]);
}
}
diff
-class UserController
+readonly class UserShowController
{
- public function show(User $User): View
+ public function __invoke(User $User): View
{
return view('user.show', ['user' => $User]);
}
}
diff
-class UserController
+class UserShowController
{
- public function show(User $User): View
+ public function __invoke(User $User): View
{
return view('user.show', ['user' => $User]);
}
}
diff
namespace App\Plugins\AdminLink;
final class AdminLinkPlugin
{
- public function tagged(string $enum, string $case): array
+ public function tagged(TaggedRoute $TaggedRoute): array
{
- return new ReflectionEnumBackedCase($enum, $case)->getAttributes();
+ return $TaggedRoute->attributes;
}
}
diff
-// FIXME the empty case
-return $items[0];
+return $items[0] ?? null;