विजुअल स्टूडियो कोड PHP इंटेलेफेंस आवश्यक त्रुटि नहीं दिखा रहा है


142

आज मुझे मिलने वाले PHP Intelephense के नवीनतम अपडेट के बाद, पूर्णांक मेरे मार्ग (और अन्य वर्ग के लिए) के लिए एक अपरिभाषित प्रतीक के लिए एक त्रुटि दिखाते रहते हैं, पहले की तरह कोई त्रुटि नहीं है और यह मुझे परेशान कर रहा है।

यहाँ त्रुटि स्क्रीनशॉट है:

यहां छवि विवरण दर्ज करें

और यह मेरा कोड है:

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');
});

वास्तव में इस कोड में कोई त्रुटि नहीं है, लेकिन पूर्णांक एक त्रुटि दिखा रहा है तो क्या इसे ठीक करने का कोई तरीका है?


मैंने आवेदन की अंक कतार में इस पर एक समस्या की सूचना दी है - github.com/bmewburn/vscode-intelephense/issues/885
anupjohn

यदि आप अपने रूट में अपरिभाषित त्रुटि प्राप्त कर रहे हैं api.php, तो नीचे दिए गए @ user12483351 का उत्तर देखें। उसने मेरे लिए इसे हल कर दिया। मैं इंटेलेफिस 1.3.6 पर हूं।
डॉटनेट

जवाबों:


103

इंटेलेफ़ेंस 1.3 ने अपरिभाषित प्रकार, फ़ंक्शन, निरंतर, वर्ग निरंतर, विधि और संपत्ति निदान जोड़े, जहां पहले 1.2 में केवल अपरिभाषित चर निदान थे।

कुछ रूपरेखाएं इस तरह से लिखी जाती हैं जो उपयोगकर्ता के लिए सुविधाजनक शॉर्टकट प्रदान करती हैं लेकिन स्थैतिक विश्लेषण इंजन के लिए रनटाइम के लिए उपलब्ध प्रतीकों की खोज करना मुश्किल बना देती हैं।

Https://github.com/barryvdh/laravel-ide-helper जैसे स्टब जेनरेटर यहां गैप को भरने में मदद करते हैं और लारवेल के साथ इसका उपयोग करके प्रतीकों की ठोस परिभाषाएं प्रदान करके कई गलत निदानों की देखभाल की जा सकती है जिन्हें आसानी से खोजा जा सकता है।

फिर भी, PHP एक बहुत ही लचीली भाषा है और कोड लिखे जाने के आधार पर गलत अपरिभाषित प्रतीकों के अन्य उदाहरण हो सकते हैं। इस कारण से, 1.3.3 के बाद से, पूर्णांक के पास कार्यक्षेत्र और कोडिंग शैली के अनुरूप अपरिभाषित प्रतीक की प्रत्येक श्रेणी को सक्षम / अक्षम करने के लिए विकल्प हैं।

ये विकल्प हैं: intelephense.diagnostics.undefinedTypes intelephense.diagnostics.undefinedFunctions intelephense.diagnostics.undefinedConstants intelephense.diagnostics.undefinedClassConstants intelephense.diagnostics.undefinedMethods intelephense.diagnostics.undefinedProperties intelephense.diagnostics.undefinedVariables

इन सभी को झूठे को छोड़कर intelephense.diagnostics.undefinedVariablesसंस्करण 1.2 व्यवहार देगा। VSCode सेटिंग्स UI देखें और खोजें intelephense


कष्टप्रद चेतावनियों के साथ कुछ दिन गुज़ारे, अब हाल के अपडेट 1.3.3 के साथ - यह सब ठीक है .. धन्यवाद @bewewburn
इस्लाम

1
अलग-अलग विन्यास के लिए धन्यवाद, अब मैं अपरिभाषित मेथोड को अक्षम कर देता हूं क्योंकि पूर्णांक के रूप में लार्वा हेल्पर का पता नहीं लगाया जा सकता auth()->user()क्योंकि कक्षा \ App \ उपयोगकर्ता से कॉलिंग विधि \ App \ उपयोगकर्ता से auth()->user()त्रुटि के रूप में पता लगाया जाएगा। मैंने use Illuminate\Support\Facades\Route;अपरिभाषित प्रतीक मार्ग त्रुटि को ठीक करने के लिए अपने मार्गों में जोड़ा ।
क्रिसथोफर नटालियस

2
इसके लिए धन्यवाद। मेरे सेटअप के लिए, बस व्यवहार्य intelephense.diagnostics.undefinedMethodsऔर intelephense.diagnostics.undefinedTypeकाम करता है।
kamudrikah

laravel-ide-helperचेतावनी तय की। धन्यवाद!
जियोनीनिड्स

_ide_helper.phpडॉक्स पर सुझाए गए अनुसार उत्पन्न करने के लिए बस जरूरत है ।
जियोनीनिड्स

121

संस्करण 1.3.0 में दोष IMO है।
संस्करण 1.2.3 में डाउनग्रेड मेरी समस्या को ठीक करता है।

मैं चालू हूँ

  • लारवेल 5.1
  • PHP 5.6.40

संस्करण 1.2.3 में डाउनग्रेड करें


3
हाँ, मुझे लगता है कि यह सबसे अच्छा जवाब है, समस्या का नया संस्करण है
एड्रियन एडी प्रतामा

हाँ! मुझे ठीक यही समस्या थी, जो एक घंटे पहले शुरू हुई क्योंकि इंटेलेफेंस को 1.3.0 में अपडेट किया गया - 1.2.3 पर अपग्रेड कर इसे ठीक कर दिया गया।
लेओ

1
मेरे लिए भी ऐसा। मैं PHP 5.3.3 में एक परियोजना पर काम कर रहा हूँ। एक बार 1.3 हर जगह त्रुटियों को स्थापित किया गया था। इंटेलेफेंस एक्सटेंशन सेटिंग में PHP संस्करण 5.3.3 पर सेट करना ("intelephense.environment.phpVersion": "5.3.3") कुछ भी नहीं किया। 1.2.3 पर वापस लौटकर इसे ठीक किया।
बेन

2
@ अन्य समस्याएं हैं। आप क्वेरी स्कोप आदि के लिए त्रुटियाँ प्राप्त करने जा रहे हैं। यह केवल facades नहीं है।
मिलोस्लाव मिलो जानोसेक

2
Intelephense 1.3.3 आपके कार्यक्षेत्र और कोडिंग शैली के अनुरूप आगे के विन्यास विकल्प जोड़ता है। अपरिभाषित निदान की प्रत्येक श्रेणी को अब सूट करने के लिए सक्षम / अक्षम किया जा सकता है।
bmewburn

19

आपको अपने द्वारा डाउनग्रेड करने की आवश्यकता नहीं है:

सेटिंग्स में या तो अपरिभाषित प्रतीक डायग्नोस्टिक्स को अक्षम करें - "intelephense.diagnostics.undefinedSymbols": गलत।

या एक आइड हेल्पर का उपयोग करें जो लार्वा facades के लिए स्टब्स जोड़ता है। Https://github.com/barryvdh/laravel-ide-helper देखें


3
IDE हेल्पर रूट क्लोजर या अन्य क्लोजर के साथ समस्याओं को हल करता है, लेकिन आप अन्य
स्कूप्स

3
तो एक मुद्दे को हल करने के लिए हमें सही निदान की आवश्यकता है। कोई रास्ता नहीं जोसी!
कार्लोस मोरा

मैंने IDE हेल्पर को स्थापित किया और निर्देश के अनुसार फ़ाइल उत्पन्न की। यह एक लारवेल परियोजना पर है। यह कुछ भी नहीं बदलने के लिए दिखाई दिया और अभी भी सभी जगह अपरिभाषित प्रतीक थे। इसलिए मैंने
21.325

15
use Illuminate\Support\Facades\Route;

संबंधित नाम स्थान आयात करने के बाद गायब हो गई चेतावनी।

संस्करण के

  • लवलीन 6+
  • बनामकोड संस्करण 1.40.2
  • php पूर्णांक १.३.१

यह वास्तव में समस्या को हल करता है। कंसोल के अंदर आदेशों के लिए। साथ ही साथ यह काम करता है: इल्यूमिनेट / सपोर्ट \ फेसेड्स \ _ आर्टिसन का उपयोग करें;
एलेक्स

यह लार्वा की सिफारिश नहीं है। laravel-ide-helperविन्यास है।
गोडनीपंड्स

इस समस्या को हल करने के लिए जोड़ना Route, लेकिन मेरे लिए एक ही त्रुटि थी Auth, इसलिए मैंने भी जोड़ा use Illuminate\Support\Facades\Auth;। समस्या सुलझ गयी।
दिनदहा

13

1.3.1 इसे तय किया।

बस अपने एक्सटेंशन को अपडेट करें और आपको जाने के लिए अच्छा होना चाहिए


22
मैं पहले से ही v1.3.1 पर हूं लेकिन त्रुटि दिखती रहती है।
अल्टामैडैड

मुझे भी, क्या कोई फिक्स है या हमें डाउनग्रेड करना चाहिए?
टोनिक्स

3
मेरे लिए यह कुछ भी हल नहीं करता है। 1.2.3 पर वापस जाना ठीक है!
कार्लोस मोरा

1
1.3.1 अभी भी मेरे लिए यह समस्या है। १.२.३ ने इसे तय किया
NULL पॉइंटर

2
मैं 1.3.2 पर हूं और अभी भी निश्चित नहीं हूं। 1.2.3 पर पुन: डाउनग्रेड किया गया।
एलेक्स

12

यह समाधान आपकी मदद कर सकता है यदि आप जानते हैं कि आपकी समस्याएं फेसड्स तक सीमित हैं और आप लारवेल 5.5 या इसके ऊपर चल रहे हैं।

लार्वा-आइड-हेल्पर स्थापित करें

composer require --dev barryvdh/laravel-ide-helper

AppServiceProviderसहायक श्रेणी को पंजीकृत करने के लिए इस सशर्त विवरण को अपने में जोड़ें ।

public function register()
{
    if ($this->app->environment() !== 'production') {
        $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
    }
    // ...
}

फिर php artisan ide-helper:generateआईडीई को समझने में मदद करने के लिए एक फाइल जेनरेट करने के लिए रन करें। आपको Visual Studio कोड को पुनरारंभ करना होगा।

संदर्भ

https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16

https://github.com/barryvdh/laravel-ide-helper


1
इसके साथ संभावना है कि आपको डुप्लिकेट की गई परिभाषाएँ मिलेंगी
कार्लोस मोरा

@CarlosMora मुझे नहीं लगता। मुझे वह नहीं मिला जो आप का मतलब था ...
गॉडेनीपंड्स

मैं लार्वा का उपयोग कर रहा हूं 6.x और यह काम करता है।
हकीको


Authवीएस कोड को पुनः आरंभ करने के बाद पूर्णांक बंद हो गया । मैंने इस उत्तर में दिखाए गए कदमों को ठीक किया। VS कोड को पुनरारंभ करने के बाद, इसे एक या दो मिनट दें और त्रुटियां स्पष्ट होनी चाहिए।
agm1984

6

यह वास्तव में आपके संपादक के लिए लारवेल को समझने के लिए कॉन्फ़िगरेशन का एक सेट है।

यदि आप इसे सभी मैन्युअल रूप से कॉन्फ़िगर करना चाहते हैं, तो यहां रेपो है । यह VS कोड और PhpStorm दोनों के लिए है।

या आप चाहें तो इस पैकेज को डाउनलोड कर सकते हैं । (मैंने बनाया) इसे विश्व स्तर पर स्थापित करने की सिफारिश की गई है।

और फिर बस दौड़ो andylaravel setupIDE। यह मुट्ठी रेपो के अनुसार आपके लिए सब कुछ कॉन्फ़िगर करेगा।


5

नहीं, त्रुटि केवल तब होती है जब Intelephense एक्सटेंशन स्वचालित रूप से अपडेट हो जाता है।

समस्या को हल करने के लिए, आप इंटेलेफेंस एक्सटेंशन में "एक और संस्करण स्थापित करें" पर क्लिक करके इसे पिछले संस्करण में डाउनग्रेड कर सकते हैं। संस्करण 1.2.3 पर कोई त्रुटि नहीं है।


1
1.2.3 पर अपग्रेड करने से समस्या हल हो गई।
जुलिटिलो

2

यदि आप एक नया वेंडर वर्ग जोड़ने के तुरंत बाद देखते हैं, तो वीएसकोड कमांड (नियंत्रण-शिफ्ट-पी) चलाना सुनिश्चित करें Index Workspace


1

यहाँ मैं हल है:

एक्सटेंशन सेटिंग खोलें:

यहां छवि विवरण दर्ज करें

और उस चर की खोज करें जिसे आप बदलना चाहते हैं, और इसे अनियंत्रित / चेक किया गया है

यहां छवि विवरण दर्ज करें

जिन चरों पर आपको विचार करना चाहिए वे हैं:

intelephense.diagnostics.undefinedTypes 
intelephense.diagnostics.undefinedFunctions         
intelephense.diagnostics.undefinedConstants         
intelephense.diagnostics.undefinedClassConstants 
intelephense.diagnostics.undefinedMethods 
intelephense.diagnostics.undefinedProperties 
intelephense.diagnostics.undefinedVariables

1

उन लोगों के लिए यह सरल, मूर्ख रखना पसंद करेंगे; यदि आपको सहायक या डाउनग्रेडिंग स्थापित करने के बजाय नोटिस से छुटकारा मिलता है, तो बस settings.jsonइसे जोड़कर त्रुटि को अक्षम करें:

"intelephense.diagnostics.undefinedTypes": false

0

१.३.३ ने तय किया। बस अपने एक्सटेंशन को अपडेट करें।


न सिर्फ इसे अपडेट करें बल्कि आपको कुछ फीचर को डिसेबल करना होगा जैसे @bewewburn उत्तर में कहा गया है
एड्रियन

0

मेरे पास एक ही मुद्दा था और निम्नलिखित ने इस मुद्दे को संबोधित किया था।

क) नवीनतम संस्करण 1.3.5 के लिए अपडेट किया गया और सभी निदान सेटिंग्स को फिर से सक्षम किया गया।

मुझे अभी भी मैसेज मिल रहे थे

ख) वेंडर फ़ोल्डर आश्रित पुस्तकालयों के साथ कार्यक्षेत्र में जोड़ा गया

इससे समस्या हल हो गई है।


आप का उपयोग कर सकते हैंlaravel-ide-helper
giovannipds

पारितोषिक के लिए धन्यवाद। मैं ड्रुपल के अंदर सिम्फनी का उपयोग कर रहा हूं। क्या लार्वा-आइड-हेल्पर मदद करेगा?
अनूपजोन

0

इन मुद्दों से गुजरने वाले और चेक के पूरे सेट को अक्षम करने के बारे में असहज होने के लिए, इंटेलेफेंस के लिए अपने स्वयं के कस्टम हस्ताक्षर पास करने का एक तरीका है (मैं VSCode का उपयोग करता हूं, लेकिन यह विज़ुअल स्टूडियो कोड के लिए भी काम करना चाहिए)।

Intelephese repo की टिप्पणी (@KapitanOczywisty द्वारा) से कॉपी की गई:
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecommentment6585212100

एकल कार्यक्षेत्र के लिए यह बहुत सरल है, आपको .phpसभी हस्ताक्षर के साथ फ़ाइल बनाना होगा और पूर्णांक उन्हें अनुक्रमित करेगा।

यदि आप विश्व स्तर पर स्टब्स जोड़ना चाहते हैं, तो आप अभी भी कर सकते हैं, लेकिन मुझे यकीन नहीं है कि यह इच्छित विशेषता है । यहां तक ​​कि अगर intelephense.stubsआप गलत मूल्य के बारे में चेतावनी देते हैं, तो आप वास्तव में किसी भी फ़ोल्डर का नाम रख सकते हैं ।

{   
   "intelephense.stubs": [
       // ...
       "/path/to/your/stub"   
   ] 
} 

नोट: इस सेटिंग परिवर्तन के साथ स्टब्स ताज़ा हो जाते हैं।

आप बिल्ड-इन स्टब्स पर एक नज़र डाल सकते हैं: https://github.com/JetBrains/phpstorm-stubs

मेरे मामले में, मैं की जरूरत dspec की describe, beforeEach, it..., त्रुटियों के रूप में हाइलाइट नहीं किया जा करते हैं तो मैं बस हस्ताक्षरों के साथ फ़ाइल शामिल /directories_and_paths/app/vendor/bin/dspecमेरी VSCode के कार्यक्षेत्र सेटिंग्स, जो समारोह घोषणाओं मैं जरूरत थी:

function describe($description = null, \Closure $closure = null) {
}

function it($description, \Closure $closure) {
}

// ... and so on
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.