Después de la última actualización de PHP Intelephense que recibo hoy, el intelephense sigue mostrando un error para un símbolo indefinido para mi ruta (y otra clase también), no hay ningún error como este antes y me está molestando.
Aquí está la captura de pantalla de error:
Y este es mi 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');
});
En realidad no hay ningún error en este código, pero la intelephense sigue mostrando un error, ¿hay alguna forma de solucionarlo?
php
laravel
visual-studio-code
Adrian Edy Pratama
fuente
fuente
api.php
, consulte la respuesta de @ user12483351 a continuación. Eso me lo arregló. Estoy en Intelephese 1.3.6.Respuestas:
Intelephense 1.3 agregó diagnósticos indefinidos de tipo, función, constante, constante de clase, método y propiedades, donde anteriormente en 1.2 solo había diagnósticos variables indefinidos.
Algunos marcos están escritos de una manera que proporciona accesos directos convenientes para el usuario, pero dificulta que los motores de análisis estático descubran símbolos que están disponibles en tiempo de ejecución.
Los generadores de código auxiliar como https://github.com/barryvdh/laravel-ide-helper ayudan a llenar el vacío aquí y usar esto con Laravel se encargará de muchos de los diagnósticos falsos al proporcionar definiciones concretas de símbolos que se pueden descubrir fácilmente.
Aún así, PHP es un lenguaje muy flexible y puede haber otras instancias de símbolos falsos indefinidos dependiendo de cómo se escriba el código. Por esta razón, desde 1.3.3, intelephense tiene opciones de configuración para habilitar / deshabilitar cada categoría de símbolo indefinido para adaptarse al espacio de trabajo y al estilo de codificación.
Estas opciones son:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
Establecer todo esto en falso excepto
intelephense.diagnostics.undefinedVariables
dará el comportamiento de la versión 1.2. Consulte la IU de configuración de VSCode y busqueintelephense
.fuente
auth()->user()
como class \ App \ User, por lo que el método de llamada dentro de \ App \ Userauth()->user()
se detectará como error. Acabo de agregaruse Illuminate\Support\Facades\Route;
en mis rutas para corregir el error de ruta de símbolo indefinido.intelephense.diagnostics.undefinedMethods
yintelephense.diagnostics.undefinedType
funciona.laravel-ide-helper
Arreglado el aviso. ¡Gracias!_ide_helper.php
como se sugiere en los documentos.La versión 1.3.0 tiene defectos IMO.
La degradación a la versión 1.2.3 soluciona mi problema.
Estoy en
fuente
No necesita rebajar, puede:
Deshabilite el diagnóstico de símbolo indefinido en la configuración: "intelephense.diagnostics.undefinedSymbols": falso.
O use un ayudante ide que agregue trozos para fachadas laravel. Ver https://github.com/barryvdh/laravel-ide-helper
fuente
Advertencia Desapareció después de importar el espacio de nombres correspondiente.
Versiones
fuente
laravel-ide-helper
la configuración esRoute
, pero tuve el mismo errorAuth
, así que también agreguéuse Illuminate\Support\Facades\Auth;
. Problema resuelto.1.3.1 lo arregló.
Simplemente actualice su extensión y debería estar listo para comenzar
fuente
Esta solución puede ayudarlo si sabe que sus problemas están limitados a Fachadas y está ejecutando Laravel 5.5 o superior.
Instalar laravel-ide-helper
composer require --dev barryvdh/laravel-ide-helper
Agregue esta declaración condicional en su
AppServiceProvider
para registrar la clase auxiliar.Luego, ejecute
php artisan ide-helper:generate
para generar un archivo para ayudar al IDE a comprender las fachadas. Deberá reiniciar Visual Studio Code.Referencias
https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16
https://github.com/barryvdh/laravel-ide-helper
fuente
Auth
después de reiniciar VS Code. Hice exactamente los pasos que se muestran en esta respuesta. Después de reiniciar VS Code, espere un minuto o dos y los errores deberían desaparecer.Este es realmente un conjunto de configuraciones para que su editor entienda Laravel.
Si desea configurarlo todo manualmente, aquí está el repositorio . Esto es tanto para el código VS como para PhpStorm.
O si lo desea, puede descargar este paquete . (Creé) recomienda instalarlo globalmente.
Y luego solo corre
andylaravel setupIDE
. esto configurará todo para usted de acuerdo con el primer repositorio.fuente
No, los errores ocurren solo después de que la extensión Intelephense se actualiza automáticamente.
Para resolver el problema, puede degradarlo a la versión anterior haciendo clic en "Instalar otra versión" en la extensión Intelephense. No hay errores en la versión 1.2.3.
fuente
Si ve esto inmediatamente después de agregar una nueva clase de proveedor, asegúrese de ejecutar el comando VScode (control-shift-P)
Index Workspace
fuente
Aquí está resuelto:
Abra la configuración de extensión:
Y busque la variable que desea cambiar, y desmarque / marque
Las variables que debe considerar son:
fuente
A los que prefieren mantenerlo simple, estúpido; Si prefiere deshacerse de los avisos en lugar de instalar un asistente o una degradación, simplemente deshabilite el error
settings.json
agregando esto:fuente
1.3.3 lo arregló. Simplemente actualice su extensión.
fuente
Tuve el mismo problema y lo siguiente parecía haber solucionado el problema.
a) Se actualizó a la última versión 1.3.5 y volvió a habilitar todas las configuraciones de diagnóstico.
Seguía recibiendo los mensajes
b) Se agregó la carpeta del proveedor con las bibliotecas dependientes al espacio de trabajo
Esto parece haber resuelto el problema.
fuente
laravel-ide-helper
Para cualquiera que esté pasando por estos problemas y se sienta incómodo al deshabilitar un conjunto completo de comprobaciones, hay una manera de pasar sus propias firmas personalizadas a Intelephense (uso VSCode, pero debería funcionar igual para Visual Studio Code).
Copiado del comentario del repositorio de Intelephese (por @KapitanOczywisty):
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100
En mi caso, necesitaba de dspec
describe
,beforeEach
,it
... a no ser señalados como los errores, por lo que sólo incluía el archivo con las firmas/directories_and_paths/app/vendor/bin/dspec
en la configuración del espacio de trabajo de mis VSCode, que tenían las declaraciones de funciones que necesitaba:fuente