Après la dernière mise à jour de PHP Intelephense que je reçois aujourd'hui, l'intelephense continue d'afficher une erreur pour un symbole non défini pour mon itinéraire (et d'autres classes aussi), il n'y a pas d'erreur comme celle-ci auparavant et cela me dérange.
Voici la capture d'écran d'erreur:
Et voici mon code:
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 fait, il n'y a pas d'erreur dans ce code mais l'intéléphense continue d'afficher une erreur, donc y a-t-il un moyen de résoudre ce problème?
php
laravel
visual-studio-code
Adrian Edy Pratama
la source
la source
api.php
, consultez la réponse de @ user12483351 ci-dessous. Cela m'a arrangé. Je suis sur Intelephese 1.3.6.Réponses:
Intelephense 1.3 a ajouté des diagnostics de type, de fonction, de constante, de constante de classe, de méthode et de propriété non définis, alors qu'auparavant, en 1.2, il n'y avait que des diagnostics de variable non définis.
Certains frameworks sont écrits de manière à fournir des raccourcis pratiques pour l'utilisateur, mais rendent difficile pour les moteurs d'analyse statique de découvrir les symboles disponibles au moment de l'exécution.
Les générateurs de stub comme https://github.com/barryvdh/laravel-ide-helper aident à combler le vide ici et à l'utiliser avec Laravel va prendre en charge de nombreux faux diagnostics en fournissant des définitions concrètes de symboles qui peuvent être facilement découverts.
Pourtant, PHP est un langage très flexible et il peut y avoir d'autres cas de faux symboles non définis selon la façon dont le code est écrit. Pour cette raison, depuis 1.3.3, intelephense a des options de configuration pour activer / désactiver chaque catégorie de symbole non défini en fonction de l'espace de travail et du style de codage.
Ces options sont:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
La définition de tous ces éléments sur false sauf
intelephense.diagnostics.undefinedVariables
donnera le comportement de la version 1.2. Voir l'interface utilisateur des paramètres VSCode et recherchezintelephense
.la source
auth()->user()
tant que classe \ App \ User donc la méthode d'appel dans \ App \ User à partir deauth()->user()
sera détectée comme une erreur. Je viens d'ajouteruse Illuminate\Support\Facades\Route;
dans mes itinéraires pour corriger l'erreur de route de symbole non définie.intelephense.diagnostics.undefinedMethods
etintelephense.diagnostics.undefinedType
fonctionne.laravel-ide-helper
correction de l'avertissement. Je vous remercie!_ide_helper.php
comme suggéré sur les documents.La version 1.3.0 a un défaut IMO.
La rétrogradation vers la version 1.2.3 résout mon problème.
Je suis dessus
la source
Vous n'avez pas besoin de rétrograder, vous pouvez:
Soit désactiver les diagnostics de symboles non définis dans les paramètres - "intelephense.diagnostics.undefinedSymbols": false.
Ou utilisez un assistant ide qui ajoute des talons pour les façades laravel. Voir https://github.com/barryvdh/laravel-ide-helper
la source
Avertissement Disparu après l'importation de l'espace de noms correspondant.
Versions
la source
laravel-ide-helper
la configuration est.Route
, mais j'ai eu la même erreur pourAuth
, j'ai donc ajoutéuse Illuminate\Support\Facades\Auth;
aussi. Problème résolu.1.3.1 l'a corrigé.
Mettez simplement à jour votre extension et vous devriez être prêt à partir
la source
Cette solution peut vous aider si vous savez que vos problèmes sont limités aux façades et que vous utilisez Laravel 5.5 ou supérieur.
Installer laravel-ide-helper
composer require --dev barryvdh/laravel-ide-helper
Ajoutez cette instruction conditionnelle dans votre
AppServiceProvider
pour enregistrer la classe d'assistance.Ensuite, exécutez
php artisan ide-helper:generate
pour générer un fichier pour aider l'IDE à comprendre les façades. Vous devrez redémarrer Visual Studio Code.Références
https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16
https://github.com/barryvdh/laravel-ide-helper
la source
Auth
après avoir redémarré VS Code. J'ai fait exactement les étapes indiquées dans cette réponse. Après avoir redémarré VS Code, donnez-lui une minute ou deux et les erreurs devraient disparaître.Il s'agit vraiment d'un ensemble de configurations permettant à votre éditeur de comprendre Laravel.
Si vous souhaitez tout configurer manuellement, voici le repo . C'est pour le code VS et PhpStorm.
Ou si vous le souhaitez, vous pouvez télécharger ce package (j'ai créé) recommandé de l'installer globalement.
Et puis courez
andylaravel setupIDE
. cela configurera tout pour vous selon le premier dépôt.la source
Non, les erreurs se produisent uniquement après la mise à jour automatique de l'extension Intelephense.
Pour résoudre le problème, vous pouvez le rétrograder vers la version précédente en cliquant sur "Installer une autre version" dans l'extension Intelephense. Il n'y a aucune erreur sur la version 1.2.3.
la source
Si vous voyez cela immédiatement après l'ajout d'une nouvelle classe Vendor, assurez-vous d'exécuter la commande VScode (control-shift-P)
Index Workspace
la source
Voici que j'ai résolu:
Ouvrez les paramètres d'extension:
Et recherchez la variable que vous souhaitez modifier, et décochez-la / cochez-la
Les variables à considérer sont:
la source
Pour ceux qui préfèrent rester simple, stupide; Si vous préférez vous débarrasser des notifications au lieu d'installer un assistant ou de rétrograder, désactivez simplement l'erreur dans votre
settings.json
en ajoutant ceci:la source
1.3.3 l'a corrigé. Mettez simplement à jour votre extension.
la source
J'ai eu le même problème et les éléments suivants semblent avoir résolu le problème.
a) Mise à jour vers la dernière version 1.3.5 et réactivation de tous les paramètres de diagnostic.
Je recevais toujours les messages
b) Ajout du dossier fournisseur avec les bibliothèques dépendantes à l'espace de travail
Cela semble avoir résolu le problème.
la source
laravel-ide-helper
Pour quiconque traverse ces problèmes et hésite à désactiver un ensemble complet de vérifications, il existe un moyen de transmettre vos propres signatures personnalisées à Intelephense (j'utilise VSCode, mais cela devrait fonctionner de la même manière pour Visual Studio Code).
Copié du commentaire du repo Intelephese (par @KapitanOczywisty):
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100
Dans mon cas, je avais besoin de dspec
describe
,beforeEach
,it
... à ne pas être mis en évidence que des erreurs, donc je viens inclus le fichier avec les signatures/directories_and_paths/app/vendor/bin/dspec
dans mes paramètres de l' espace de travail de VSCode, qui avaient les déclarations de fonctions dont je avais besoin:la source