Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Rector Rules Laravel Package

ergebnis/rector-rules

A curated set of custom Rector rules from ergebnis to automate PHP refactoring and style consistency. Includes rules for sorting arrays and match arms, simplifying call arguments, Faker updates, namespace symbol references, and PHPUnit attribute-to-prefix changes.

View on GitHub
Deep Wiki
Context7

Files\ReferenceNamespacedSymbolsRelativeToNamespacePrefixRector

Replaces references to namespaced symbols (classes, functions, constants) whose fully-qualified name starts with a namespace prefix so they are relative to that prefix.

Configuration

discoverNamespacePrefixes

Automatically discover namespace prefixes by scanning the file's references and extracting their first segment.

  • type: bool
  • default value: false

forceRelativeReferences

Force references to be expressed relative to the namespace prefix even when the file namespace matches the prefix.

  • type: bool
  • default value: false

namespacePrefixes

A list of namespace prefixes to consolidate.

  • type: list<string>
  • default value: []

parentNamespacePrefixes

A list of parent namespace prefixes for automatic discovery of namespace prefixes per file.

  • type: list<string>
  • default value: []

Examples

Example 1

Configuration:

  • namespacePrefixes: ['Foo\Bar\Baz']
-use Foo\Bar;
-use Foo\Bar\Baz\Qux;
+use Foo\Bar\Baz;
 
-new Bar\Baz\Qux\Quuz();
-new Qux\Quuz\Grauply();
+new Baz\Qux\Quuz();
+new Baz\Qux\Quuz\Grauply();

Example 2

Configuration:

  • namespacePrefixes: ['Example\Core\Routing', 'Example\Domain', 'Psr\Http']
 namespace Example\App;
 
-use Example\Core\Routing\Attribute\Route;
-use Example\Domain\UserRepository;
-use Psr\Http\Message\ResponseInterface;
+use Example\Core\Routing;
+use Example\Domain;
+use Psr\Http;
 
 final class ExampleController
 {
-    private UserRepository $userRepository;
+    private Domain\UserRepository $userRepository;
 
-    #[Route(path: '/example', name: 'example')]
-    public function dashboard(): ResponseInterface
+    #[Routing\Attribute\Route(path: '/example', name: 'example')]
+    public function dashboard(): Http\Message\ResponseInterface
     {
     }
 }

Example 3

Configuration:

  • parentNamespacePrefixes: ['Example']
 namespace Example\App;
 
-use Example\Core\Controller\AbstractController;
+use Example\Core;
 
-final class ExampleController extends AbstractController
+final class ExampleController extends Core\Controller\AbstractController
 {
 }

Example 4

Configuration:

  • namespacePrefixes: ['Example\Core\Routing']
  • parentNamespacePrefixes: ['Example']
 namespace Example\App;
 
-use Example\Core\Controller\AbstractController;
-use Example\Core\Routing\Attribute\Route;
+use Example\Core;
+use Example\Core\Routing;
 
-final class ExampleController extends AbstractController
+final class ExampleController extends Core\Controller\AbstractController
 {
-    #[Route(path: '/example', name: 'example')]
+    #[Routing\Attribute\Route(path: '/example', name: 'example')]
     public function dashboard()
     {
     }
 }

Example 5

Configuration:

  • namespacePrefixes: ['Example\Core\Routing', 'Example\Core', 'Example\Core\Caching\Redis']
 namespace Example\App;
 
-use Example\Core\Caching\Redis\Connection;
-use Example\Core\Controller\AbstractController;
-use Example\Core\Routing\Attribute\Route;
+use Example\Core\Caching\Redis;
+use Example\Core;
+use Example\Core\Routing;
 
-final class ExampleController extends AbstractController
+final class ExampleController extends Core\Controller\AbstractController
 {
-    #[Route(path: '/example', name: 'example')]
-    #[Connection(host: 'localhost')]
+    #[Routing\Attribute\Route(path: '/example', name: 'example')]
+    #[Redis\Connection(host: 'localhost')]
     public function dashboard()
     {
     }
 }

Example 6

Configuration:

  • forceRelativeReferences: true
  • namespacePrefixes: ['Example\Core']
 namespace Example\Core\Bar;
 
-use Example\Core\Bar\Baz;
-use Example\Core\Bar\Baz\Qux;
-use Example\Core\Quz;
+use Example\Core;
 
 final class ExampleService
 {
     public function __construct(
-        private Baz $baz,
-        private Qux $qux,
-        private Quz $quz,
+        private Core\Bar\Baz $baz,
+        private Core\Bar\Baz\Qux $qux,
+        private Core\Quz $quz,
     ) {
     }
 }

Example 7

Configuration:

  • discoverNamespacePrefixes: true
 namespace App;
 
-use Ramsey\Uuid\Uuid;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
+use Ramsey\Uuid;
+use Symfony\Component;
 
 final class Kernel
 {
-    public function handle(Request $request): Response
+    public function handle(Component\HttpFoundation\Request $request): Component\HttpFoundation\Response
     {
-        $id = Uuid::uuid4();
+        $id = Uuid\Uuid::uuid4();
     }
 }
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium