> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel LSP — estensione delle funzionalità IDE tramite Language Server Protocol

> L'implementazione ufficiale Laravel del Language Server Protocol. Fornisce all'editor completamento e hover consapevoli del framework.

<Info>
  Questo articolo è un'indagine iniziale su v0.0.19, aggiornata a giugno 2026. Prima della registrazione su Packagist non è ancora possibile installarlo tramite composer.
</Info>

## Cos'è Laravel LSP

**Laravel LSP** (Language Server Protocol) è lo strumento ufficiale che fornisce all'editor funzionalità IDE consapevoli del framework Laravel. Il [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) è un protocollo standard di comunicazione tra client LSP (l'editor, ecc.) e server LSP (Laravel LSP), che permette un'esperienza di sviluppo unificata su più editor.

Funzionalità offerte da Laravel LSP:

* **Completamento** — auto-completamento di rotte, viste, chiavi di configurazione, chiavi di traduzione, componenti Livewire, ecc.
* **Informazioni al passaggio del cursore** — quando ci passi sopra vengono mostrate descrizioni, documentazione e informazioni di contesto
* **Diagnostica** — rilevamento in tempo reale dei problemi nel codice
* **Link nei documenti** — funzione di link tra file e risorse
* **Quick fix** — proposte di correzione automatica per problemi comuni
* **Jump to definition** — salto alla posizione di definizione di un simbolo

## Perché serve

Il completamento PHP standard degli editor non comprende il livello di astrazione del framework Laravel. Ad esempio:

* Nel primo argomento di `Route::get()`, digitando pattern di URI non c'è completamento
* Digitando il nome della vista in `view('users.index')`, non viene completato il nome reale del file
* Chiavi di configurazione (`config('app.name')`) e chiavi di traduzione (`trans('messages.welcome')`) sono fuori dal completamento
* Anche il completamento e la validazione all'interno dei template Blade non sono supportati dagli editor standard

Laravel LSP comprende questa "contestualità specifica del framework" e offre completamento e diagnostica accurati.

## Installazione

### Installazione globale

Installalo globalmente con Composer:

```bash theme={null}
composer global require laravel/lsp
```

Verifica che la directory bin globale di Composer sia nel `PATH` e potrai avviarlo con il comando:

```bash theme={null}
laravel-lsp
```

### Installazione da sorgente

Se vuoi usare la versione di sviluppo, clona il repository ed esegui:

```bash theme={null}
gh repo clone laravel/lsp
cd lsp
composer install
php server
```

Configura un alias della shell per poter usare il comando `laravel-lsp`:

```bash theme={null}
# Per Zsh
echo 'alias laravel-lsp="php /path/to/lsp/server"' >> ~/.zshrc
source ~/.zshrc

# Per Bash
echo 'alias laravel-lsp="php /path/to/lsp/server"' >> ~/.bashrc
source ~/.bashrc
```

## Guida di configurazione per editor

Poiché Laravel LSP usa il protocollo LSP standard, funziona su qualsiasi editor che supporta LSP. Ecco come configurare i principali editor.

### Sublime Text

Installa il [pacchetto LSP](https://packagecontrol.io/packages/LSP), quindi aggiungi la configurazione client in `Preferences: LSP Settings`:

```json theme={null}
{
    "clients": {
        "laravel-lsp": {
            "enabled": true,
            "command": ["laravel-lsp"],
            "selector": "embedding.php | text.html.blade"
        }
    }
}
```

### Neovim

Da Neovim 0.11 in poi puoi aggiungere configurazioni LSP personalizzate direttamente:

```lua theme={null}
vim.lsp.config("laravel_lsp", {
    cmd = { "laravel-lsp" },
    filetypes = { "php", "blade" },
    root_markers = { "artisan", "composer.json", ".git" },
})

vim.lsp.enable("laravel_lsp")
```

Se usi `nvim-lspconfig`, registra così:

```lua theme={null}
local lspconfig = require("lspconfig")
local configs = require("lspconfig.configs")

if not configs.laravel_lsp then
    configs.laravel_lsp = {
        default_config = {
            cmd = { "laravel-lsp" },
            filetypes = { "php", "blade" },
            root_dir = lspconfig.util.root_pattern("artisan", "composer.json", ".git"),
        },
    }
end

lspconfig.laravel_lsp.setup({})
```

### Cursor

Cursor supporta le estensioni di VS Code, quindi se l'estensione Laravel è già installata funziona automaticamente. Per lo sviluppo locale usa un client LSP compatibile con VS Code e specifica il comando:

```sh theme={null}
laravel-lsp
```

### VS Code

Anche VS Code dispone della funzionalità client LSP, quindi puoi configurarlo tramite estensione.

### OpenCode

In `opencode.json` abilita il supporto LSP e configura Laravel LSP come server personalizzato:

```json theme={null}
{
    "$schema": "https://opencode.ai/config.json",
    "lsp": {
        "laravel-lsp": {
            "command": ["laravel-lsp"],
            "extensions": [".php", ".blade.php"]
        }
    }
}
```

## Configurazione in GitHub Copilot CLI

Se usi GitHub Copilot CLI puoi configurarlo globalmente in `~/.copilot/lsp-config.json`. Non è necessaria una configurazione separata dell'editor:

```json theme={null}
{
  "lspServers": {
    "laravel-lsp": {
      "command": "laravel-lsp",
      "fileExtensions": {
        ".php": "php",
        ".blade.php": "blade"
      }
    }
  }
}
```

La configurazione del server LSP di Copilot CLI supporta anche `initializationOptions`, quindi puoi usare tutte le impostazioni dettagliate descritte più avanti.

## Opzioni di configurazione

Il client LSP può passare a Laravel LSP configurazioni dettagliate tramite `initializationOptions`.

### Rilevamento dell'ambiente PHP

L'opzione `phpEnvironment` controlla il comando PHP usato per l'indicizzazione dei dati del progetto. Il valore predefinito è `auto` per il rilevamento automatico:

| Valore  | Comportamento del comando PHP                                           |
| ------- | ----------------------------------------------------------------------- |
| `auto`  | Rilevamento nell'ordine Herd → Valet → Sail → Lando → DDEV → PHP locale |
| `herd`  | Usa `herd which-php`                                                    |
| `valet` | Usa `valet which-php`                                                   |
| `sail`  | Con Sail in esecuzione, usa `./vendor/bin/sail php`                     |
| `lando` | Usa `lando php`                                                         |
| `ddev`  | Usa `ddev php`                                                          |
| `local` | Usa direttamente il binario PHP locale                                  |

Se il rilevamento fallisce o viene passato un valore non valido, si ricade su `php`.

### Esempio base di configurazione

```json theme={null}
{
    "phpEnvironment": "auto",
    "phpCommand": ["php"],
    "definitionProvider": false
}
```

### Configurazione per singola funzionalità

Ogni funzionalità può essere abilitata/disabilitata singolarmente. I suffissi sono `Completion`, `Diagnostics`, `Hover`, `Link`, ecc.:

```json theme={null}
{
    "routeCompletion": true,
    "routeDiagnostics": true,
    "viewDiagnostics": false,
    "translationHover": true,
    "configLink": true,
    "envCompletion": true,
    "bladeComponentLink": true
}
```

## Elenco delle funzionalità offerte

| Area                 | Completamento | Hover | Diagnostica | Link | Quick fix |
| -------------------- | ------------- | ----- | ----------- | ---- | --------- |
| Rotte                | ✓             | ✓     | ✓           | ✓    | -         |
| Viste & Blade        | ✓             | ✓     | ✓           | ✓    | ✓         |
| Traduzioni           | ✓             | ✓     | -           | -    | -         |
| Configurazione       | ✓             | ✓     | ✓           | ✓    | -         |
| Variabili d'ambiente | ✓             | ✓     | ✓           | ✓    | ✓         |
| Asset & Mix          | ✓             | ✓     | ✓           | ✓    | -         |
| Middleware           | ✓             | ✓     | ✓           | ✓    | -         |
| Inertia              | ✓             | -     | ✓           | ✓    | -         |
| Livewire             | ✓             | ✓     | -           | ✓    | -         |
| Auth & Policy        | ✓             | ✓     | ✓           | ✓    | -         |
| Container Bindings   | ✓             | ✓     | ✓           | ✓    | -         |
| Validation           | ✓             | -     | -           | -    | -         |
| Controller Actions   | ✓             | -     | ✓           | ✓    | -         |
| Eloquent             | ✓             | -     | -           | -    | -         |

## Quick start

1. **Installazione** — `composer global require laravel/lsp`
2. **Configurazione editor** — fai riferimento alla guida per editor sopra
3. **Apri un progetto Laravel** — il server indicizza a partire dalla root i dati di progetto come routes, views, translations, config
4. **Usa il completamento** — nei file PHP e nei template Blade il completamento consapevole del framework si attiva automaticamente

## Conclusioni

Laravel LSP è uno strumento che migliora notevolmente l'esperienza dello sviluppatore. Comprende la contestualità specifica del framework che le funzionalità standard degli editor non gestiscono e offre completamento e diagnostica più precisi e utili.

**Requisiti necessari:**

* PHP 8.2 o superiore
* Composer
* Editor compatibile con LSP (Sublime Text, Neovim, Cursor, VS Code, ecc.)

**Materiale di riferimento:**

* [Repository GitHub di Laravel LSP](https://github.com/laravel/lsp)
* [Sito ufficiale del Language Server Protocol](https://microsoft.github.io/language-server-protocol/)
* [Guida alla configurazione LSP di GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/copilot-cli/set-up-copilot-cli/add-lsp-servers)


## Related topics

- [Laravel Passkeys — indagine iniziale (passkeys-server + @laravel/passkeys)](/it/blog/passkeys-introduction.md)
- [Plugin Directories](/it/packages/laravel-copilot-sdk/plugin-directories.md)
- [Laravel MCP](/it/mcp.md)
- [Core — operazioni core di AT Protocol](/it/packages/laravel-bluesky/core.md)
- [Riepilogo delle novità di Laravel 13](/it/blog/laravel-13-new-features.md)
