Setelah pembaruan terbaru dari PHP Intelephense yang saya dapatkan hari ini, intelephense terus menunjukkan kesalahan untuk simbol yang tidak ditentukan untuk rute saya (dan kelas lainnya juga), tidak ada kesalahan seperti ini sebelumnya dan itu mengganggu saya.
Berikut screenshot kesalahan:
Dan ini kode saya:
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');
});
Sebenarnya tidak ada kesalahan dalam kode ini tetapi intelephense terus menunjukkan kesalahan sehingga apakah ada cara untuk memperbaikinya?
php
laravel
visual-studio-code
Adrian Edy Pratama
sumber
sumber
api.php
, lihat jawaban @ user12483351 di bawah ini. Itu memperbaikinya bagi saya. Saya menggunakan Intelephese 1.3.6.Jawaban:
Intelephense 1.3 menambahkan tipe, fungsi, konstan, konstanta kelas, metode, dan diagnostik properti yang tidak terdefinisi, di mana sebelumnya di 1.2 hanya ada diagnostik variabel yang tidak terdefinisi.
Beberapa kerangka kerja ditulis dengan cara yang menyediakan cara pintas yang nyaman bagi pengguna tetapi mempersulit mesin analisis statis untuk menemukan simbol yang tersedia saat runtime.
Generator rintisan seperti https://github.com/barryvdh/laravel-ide-helper membantu mengisi celah di sini dan menggunakan ini dengan Laravel akan menangani banyak diagnostik palsu dengan memberikan definisi konkret simbol yang dapat dengan mudah ditemukan.
Namun, PHP adalah bahasa yang sangat fleksibel dan mungkin ada contoh lain dari simbol tidak terdefinisi palsu tergantung pada bagaimana kode ditulis. Karena alasan ini, sejak 1.3.3, intelephense memiliki opsi konfigurasi untuk mengaktifkan / menonaktifkan setiap kategori simbol yang tidak ditentukan agar sesuai dengan ruang kerja dan gaya pengkodean.
Opsi-opsi ini adalah:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
Mengatur semua ini ke false kecuali
intelephense.diagnostics.undefinedVariables
akan memberikan perilaku versi 1.2. Lihat UI pengaturan VSCode dan cariintelephense
.sumber
auth()->user()
sebagai class \ App \ User sehingga metode panggilan di dalam \ App \ User fromauth()->user()
akan dideteksi sebagai kesalahan. Saya baru saja menambahkanuse Illuminate\Support\Facades\Route;
rute saya untuk memperbaiki kesalahan rute simbol yang tidak ditentukan.intelephense.diagnostics.undefinedMethods
danintelephense.diagnostics.undefinedType
berfungsi.laravel-ide-helper
memperbaiki peringatan. Terima kasih!_ide_helper.php
seperti yang disarankan pada dokumen.Versi 1.3.0 memiliki cacat IMO.
Turun ke versi 1.2.3 memperbaiki masalah saya.
aku di
sumber
Anda tidak perlu menurunkan versi, Anda dapat:
Nonaktifkan diagnosa simbol yang tidak terdefinisi dalam pengaturan - "intelephense.diagnostics.undefinedSymbols": false.
Atau gunakan penolong ide yang menambahkan bertopik untuk fasad laravel. Lihat https://github.com/barryvdh/laravel-ide-helper
sumber
Peringatan Hilang setelah mengimpor namespace yang sesuai.
Versi
sumber
laravel-ide-helper
konfigurasi adalah.Route
, tetapi saya memiliki kesalahan yang sama untukAuth
, jadi saya menambahkanuse Illuminate\Support\Facades\Auth;
juga. Masalah terpecahkan.1.3.1 memperbaikinya.
Cukup perbarui ekstensi Anda dan Anda harus siap
sumber
Solusi ini dapat membantu Anda jika Anda tahu masalah Anda terbatas pada Fasad dan Anda menjalankan Laravel 5.5 atau lebih tinggi.
Instal laravel-ide-helper
composer require --dev barryvdh/laravel-ide-helper
Tambahkan pernyataan bersyarat ini di Anda
AppServiceProvider
untuk mendaftarkan kelas pembantu.Kemudian jalankan
php artisan ide-helper:generate
untuk menghasilkan file untuk membantu IDE memahami Fasad. Anda harus me-restart Visual Studio Code.Referensi
https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16
https://github.com/barryvdh/laravel-ide-helper
sumber
Auth
setelah saya memulai ulang VS Code. Saya melakukan langkah-langkah yang ditunjukkan dalam jawaban ini. Setelah memulai ulang VS Code, berikan satu atau dua menit dan kesalahannya akan hilang.Ini benar-benar satu set konfigurasi untuk editor Anda untuk memahami Laravel.
Jika Anda ingin mengkonfigurasi semuanya secara manual, ini repo . Ini untuk kode VS dan PhpStorm.
Atau jika mau, Anda dapat mengunduh paket ini . (Saya buat) disarankan untuk menginstalnya secara global.
Dan kemudian jalankan
andylaravel setupIDE
. ini akan mengkonfigurasi segalanya untuk Anda sesuai dengan repo pertama.sumber
Tidak, kesalahan terjadi hanya setelah ekstensi Intelephense diperbarui secara otomatis.
Untuk mengatasi masalah, Anda dapat menurunkan versi ke versi sebelumnya dengan mengklik "Instal versi lain" di ekstensi Intelephense. Tidak ada kesalahan pada versi 1.2.3.
sumber
Jika Anda melihat ini segera setelah menambahkan kelas Vendor baru, pastikan untuk menjalankan perintah VScode (control-shift-P)
Index Workspace
sumber
Di sini saya dipecahkan:
Buka pengaturan ekstensi:
Dan cari variabel yang ingin Anda ubah, dan hapus centang / centang
Variabel yang harus Anda pertimbangkan adalah:
sumber
Bagi mereka yang lebih suka membuatnya sederhana, bodoh; Jika Anda lebih suka menyingkirkan pemberitahuan daripada menginstal pembantu atau menurunkan versi, cukup nonaktifkan kesalahan dalam Anda
settings.json
dengan menambahkan ini:sumber
1.3.3 memperbaikinya. Perbarui ekstensi Anda.
sumber
Saya memiliki masalah yang sama dan berikut ini sepertinya telah mengatasi masalah tersebut.
a) Diperbarui ke versi terbaru 1.3.5 dan mengaktifkan kembali semua pengaturan diagnosis.
Saya masih menerima pesan
b) Menambahkan folder vendor dengan pustaka dependen ke ruang kerja
Ini tampaknya telah menyelesaikan masalah.
sumber
laravel-ide-helper
Bagi siapa pun yang mengalami masalah ini dan merasa tidak nyaman untuk menonaktifkan seluruh rangkaian pemeriksaan, ada cara untuk menyerahkan tanda tangan khusus Anda ke Intelephense (saya menggunakan VSCode, tetapi harus bekerja sama untuk Visual Studio Code).
Disalin dari komentar repo Intelephese (oleh @KapitanOczywisty):
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100
Dalam kasus saya, saya perlu dspec ini
describe
,beforeEach
,it
... untuk tidak disorot sebagai kesalahan, jadi saya hanya menyertakan file dengan tanda tangan/directories_and_paths/app/vendor/bin/dspec
dalam pengaturan VSCode ini ruang kerja, yang memiliki deklarasi fungsi yang saya butuhkan:sumber