PHP Namespace Resolver Plus
A fork of PHP Namespace Resolver with configurable import grouping and sorting for PHP projects, including Laravel.
This extension automatically resolves missing namespaces and organizes use statements according to customizable regex-based import groups.
Features
Auto Import Resolution
Automatically adds missing imports when resolving classes:
$user = new User();
becomes:
use App\Models\User;
$user = new User();
Configurable Import Ordering
Define your own import groups using regular expressions.
Example configuration:
{
"phpNamespaceResolver.importOrder": [
"^Illuminate\\\\",
"*",
"^App\\\\"
]
}
This produces:
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Package\PackageClass;
use GuzzleHttp\Client;
use App\Models\User;
use App\Services\UserService;
Group Separation
Optionally insert blank lines between import groups.
Alphabetical Sorting
Imports are automatically sorted alphabetically within each group.
Installation
From Marketplace
Install PHP Namespace Resolver Plus from the Visual Studio Code Marketplace.
Manual Installation
Download the latest .vsix package and install:
code --install-extension php-namespace-resolver-plus.vsix
or:
- Open Extensions view (
Ctrl+Shift+X)
- Click
...
- Select Install from VSIX
- Choose the downloaded package
Configuration
Import Order
Controls grouping and ordering of imports.
{
"phpNamespaceResolver.importOrder": [
"^Illuminate\\\\",
"*",
"^App\\\\"
]
}
Group Separation
Insert blank lines between groups.
{
"phpNamespaceResolver.separateGroups": true
}
Sort Within Group
Sort imports alphabetically inside each group.
{
"phpNamespaceResolver.sortWithinGroup": true
}
Regex Examples
Laravel Projects
{
"phpNamespaceResolver.importOrder": [
"^Illuminate\\\\",
"*",
"^App\\\\"
]
}
Result:
use Illuminate\Support\Collection;
use GuzzleHttp\Client;
use Symfony\Component\Console\Command\Command;
use App\Models\User;
Domain-Driven Design Structure
{
"phpNamespaceResolver.importOrder": [
"^Illuminate\\\\",
"^Modules\\\\",
"*",
"^App\\\\"
]
}
Result:
use Illuminate\Support\Collection;
use Modules\Billing\Services\InvoiceService;
use GuzzleHttp\Client;
use App\Models\User;
Symfony Projects
{
"phpNamespaceResolver.importOrder": [
"^Symfony\\\\",
"*",
"^App\\\\"
]
}
Special Wildcard Group
The * pattern acts as a catch-all group.
Example:
{
"phpNamespaceResolver.importOrder": [
"^Illuminate\\\\",
"*",
"^App\\\\"
]
}
Equivalent regex version:
{
"phpNamespaceResolver.importOrder": [
"^Illuminate\\\\",
"^(?!Illuminate\\\\|App\\\\).*",
"^App\\\\"
]
}
Using * is recommended because it is easier to read and maintain.
Commands
Resolve Namespace
Automatically finds and imports matching classes.
Organize Imports
Sorts and groups imports according to your configured rules.
Extension Settings
| Setting |
Type |
Default |
Description |
phpNamespaceResolver.importOrder |
string[] |
[] |
Regex-based import group ordering |
phpNamespaceResolver.separateGroups |
boolean |
true |
Insert blank lines between groups |
phpNamespaceResolver.sortWithinGroup |
boolean |
true |
Alphabetically sort imports within a group |
Example
Before
use App\Models\User;
use GuzzleHttp\Client;
use Illuminate\Support\Collection;
use App\Services\UserService;
use Cockpit\Client as CockpitClient;
After
use Illuminate\Support\Collection;
use Cockpit\Client as CockpitClient;
use GuzzleHttp\Client;
use App\Models\User;
use App\Services\UserService;
Requirements
- Visual Studio Code
- PHP projects using namespaces
- Compatible with Laravel, Symfony, and other Composer-based applications
Roadmap
- [x] Regex-based import groups
- [x] Custom group ordering
- [x] Wildcard (
*) support
- [x] Alphabetical sorting within groups
- [x] Group separation
- [ ] Import ordering on save
- [ ] Namespace alias sorting
- [ ] Per-workspace import profiles
Credits
Originally based on PHP Namespace Resolver by Mehedi Hassan.
This fork extends the original functionality with configurable import grouping and ordering.
License
MIT