Try Rector
Documentation
Hire Team
Blog
Contact
Try Rector
Documentation
Hire Team
Blog
Contact
Run Rector on your code to see what it can do for you:
// no change
PHP snippet to change
<?php namespace App\Http\Controllers\Settings; use App\Http\Controllers\Concerns\PaginatesJsonResponse; use App\Models\PartMapping; use Illuminate\Database\Eloquent\Builder; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Http\JsonResponse; use Illuminate\Routing\Controller; use Spatie\QueryBuilder\AllowedFilter; use Spatie\QueryBuilder\AllowedSort; use Spatie\QueryBuilder\QueryBuilder; class PartMappingApiController extends Controller { use AuthorizesRequests; use PaginatesJsonResponse; public function index(): JsonResponse { $this->authorize('viewAny', PartMapping::class); $query = QueryBuilder::for(PartMapping::class) ->allowedSorts( // The part_type sort keeps the legacy source_part_number secondary ordering so a // type groups its rows the same way it did before. AllowedSort::callback('part_type', fn(Builder $query, bool $descending): Builder => $query ->orderBy('part_type', $descending ? 'desc' : 'asc') ->orderBy('source_part_number')), ) ->defaultSort('part_type'); return $this->apiPaginatedResponse($query->jsonPaginate()); } }
Config
rector.php
<?php use Rector\CodeQuality\Rector\If_\ObjectExplicitBoolCompareRector; use Rector\CodingStyle\Rector\PostInc\PostIncDecToPreIncDecRector; use Rector\Config\RectorConfig; use Rector\DeadCode\Rector\Assign\RemoveUnusedVariableAssignRector; use Rector\Naming\Rector\ClassMethod\RenameParamToMatchTypeRector; use Rector\PHPUnit\CodeQuality\Rector\StmtsAwareInterface\DeclareStrictTypesTestsRector; use Rector\TypeDeclaration\Rector\StmtsAwareInterface\DeclareStrictTypesRector; use Rector\TypeDeclaration\Rector\StmtsAwareInterface\SafeDeclareStrictTypesRector; return RectorConfig::configure() ->withPhpSets() ->withPreparedSets( deadCode: true, codeQuality: true, codingStyle: true, typeDeclarations: true, typeDeclarationDocblocks: true, privatization: true, naming: true, instanceOf: true, if: true, earlyReturn: true, carbon: true, rectorPreset: true, phpunitCodeQuality: true, phpunitNarrowAsserts: true, phpunitMockToStub: true ) ->withSkip([ SafeDeclareStrictTypesRector::class, RenameParamToMatchTypeRector::class, // Some variable are named to explain their purpose. ex: `canDelegateTo(User $candidate): bool` ObjectExplicitBoolCompareRector::class, PostIncDecToPreIncDecRector::class, // I dont see the plus value DeclareStrictTypesRector::class, DeclareStrictTypesTestsRector::class, RemoveUnusedVariableAssignRector::class, ]);
Run Rector
Rector version:
42f851
- released at 2026-08-31 15:45