Após a atualização mais recente do PHP Intelephense que recebo hoje, o intelephense continua mostrando um erro para um símbolo indefinido para minha rota (e para outras classes também), não há nenhum erro como esse antes e está me incomodando.
Aqui está a captura de tela do erro:
E este é o meu código:
Route::group(['prefix' => 'user', 'namespace' => 'Membership', 'name' => 'user.'], function () {
Route::get('profile', 'ProfileController@show')->name('profile.show');
Route::patch('profile', 'ProfileController@update')->name('profile.update');
Route::patch('change-password', 'ChangePasswordController@change')->name('change-password');
Route::get('role', 'ProfileController@getRole')->name('profile.role');
Route::get('summary', 'SummaryController@show')->name('summary');
Route::get('reserved', 'AuctionController@reservedAuction')->name('reserved');
});
Na verdade, não há erro neste código, mas o intelephense continua mostrando um erro, então existe uma maneira de corrigir isso?
php
laravel
visual-studio-code
Adrian Edy Pratama
fonte
fonte
api.php
, consulte a resposta do @ user12483351 abaixo. Isso consertou para mim. Estou no Intelephese 1.3.6.Respostas:
O Intelephense 1.3 adicionou diagnósticos indefinidos de tipo, função, constante, constante de classe, método e propriedade, onde anteriormente no 1.2 havia apenas diagnósticos de variáveis indefinidos.
Algumas estruturas são escritas de maneira a fornecer atalhos convenientes para o usuário, mas dificultam para os mecanismos de análise estática descobrir símbolos disponíveis no tempo de execução.
Geradores de stub como https://github.com/barryvdh/laravel-ide-helper ajudam a preencher a lacuna aqui e, usando isso com o Laravel, cuidará de muitos dos diagnósticos falsos, fornecendo definições concretas de símbolos que podem ser facilmente descobertos.
Ainda assim, o PHP é uma linguagem muito flexível e pode haver outras instâncias de símbolos falsos indefinidos, dependendo de como o código é escrito. Por esse motivo, desde a versão 1.3.3, o intelephense possui opções de configuração para ativar / desativar cada categoria de símbolo indefinido para se adequar ao espaço de trabalho e ao estilo de codificação.
Essas opções são:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
Definir tudo isso como false, exceto
intelephense.diagnostics.undefinedVariables
fornecerá o comportamento da versão 1.2. Consulte a interface do usuário das configurações do VSCode e procureintelephense
.fonte
auth()->user()
como classe \ App \ User, portanto, chamar o método dentro de \ App \ User deauth()->user()
será detectado como erro. Acabei de adicionaruse Illuminate\Support\Facades\Route;
minhas rotas para corrigir um erro de rota de símbolo indefinido.intelephense.diagnostics.undefinedMethods
eintelephense.diagnostics.undefinedType
funciona.laravel-ide-helper
corrigiu o aviso. Obrigado!_ide_helper.php
conforme sugerido nos documentos.A versão 1.3.0 tem falha no IMO.
O downgrade para a versão 1.2.3 corrige meu problema.
Estou dentro
fonte
Você não precisa fazer o downgrade, você pode:
Desative o diagnóstico de símbolo indefinido nas configurações - "intelephense.diagnostics.undefinedSymbols": false.
Ou use um auxiliar de ide que adicione stubs para fachadas de laravel. Consulte https://github.com/barryvdh/laravel-ide-helper
fonte
Aviso Desapareceu após a importação do espaço para nome correspondente.
Versão
fonte
laravel-ide-helper
configuração éRoute
, mas eu tive o mesmo erro deAuth
, então adicioneiuse Illuminate\Support\Facades\Auth;
também. Problema resolvido.1.3.1 corrigiu.
Basta atualizar sua extensão e você deve estar pronto
fonte
Esta solução pode ajudá-lo se você souber que seus problemas estão limitados a Fachadas e estiver executando o Laravel 5.5 ou superior.
Instale laravel-ide-helper
composer require --dev barryvdh/laravel-ide-helper
Adicione esta instrução condicional ao seu
AppServiceProvider
registro da classe auxiliar.Em seguida, execute
php artisan ide-helper:generate
para gerar um arquivo para ajudar o IDE a entender Fachadas. Você precisará reiniciar o Visual Studio Code.Referências
https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16
https://github.com/barryvdh/laravel-ide-helper
fonte
Auth
após reiniciar o VS Code. Eu fiz exatamente as etapas mostradas nesta resposta. Após reiniciar o VS Code, aguarde um ou dois minutos e os erros devem ser resolvidos.Este é realmente um conjunto de configurações para o seu editor entender o Laravel.
Se você deseja configurar tudo manualmente, aqui está o repo . Isso é para o código VS e o PhpStorm.
Ou, se você quiser, pode baixar este pacote . (Eu criei) recomendado para instalá-lo globalmente.
E então apenas corra
andylaravel setupIDE
. isso configurará tudo para você de acordo com o primeiro repositório.fonte
Não, os erros ocorrem somente depois que a extensão Intelephense é atualizada automaticamente.
Para resolver o problema, você pode fazer o downgrade para a versão anterior clicando em "Instalar outra versão" na extensão Intelephense. Não há erros na versão 1.2.3.
fonte
Se você vir isso imediatamente após adicionar uma nova classe de fornecedores, execute o comando VScode (control-shift-P)
Index Workspace
fonte
Aqui está eu resolvido:
Abra as configurações de extensão:
E procure a variável que você deseja alterar e desmarcou / marcou
As variáveis que você deve considerar são:
fonte
Para aqueles que preferem manter as coisas simples, estúpidas; Se você preferir se livrar dos avisos em vez de instalar um auxiliar ou fazer um downgrade, simplesmente desative o erro
settings.json
adicionando o seguinte:fonte
1.3.3 corrigiu. Atualize sua extensão.
fonte
Eu tive o mesmo problema e o seguinte parecia ter resolvido o problema.
a) Atualizado para a versão mais recente 1.3.5 e reativou todas as configurações de diagnóstico.
Eu ainda estava recebendo as mensagens
b) Adicionada a pasta do fornecedor com as bibliotecas dependentes ao espaço de trabalho
Isso parece ter resolvido o problema.
fonte
laravel-ide-helper
Para quem passa por esses problemas e se sente desconfortável em desabilitar todo um conjunto de verificações, existe uma maneira de passar suas próprias assinaturas personalizadas para o Intelephense (eu uso o VSCode, mas deve funcionar da mesma forma para o Visual Studio Code).
Copiado do comentário do Intelephese repo (por @KapitanOczywisty):
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100
No meu caso, eu precisava de dspec
describe
,beforeEach
,it
... para não ser destacados como erros, então eu só incluiu o arquivo com as assinaturas/directories_and_paths/app/vendor/bin/dspec
em minhas configurações de espaço de trabalho do VSCode, que tinham as declarações de função que eu precisava:fonte