ভিজ্যুয়াল স্টুডিও কোড পিএইচপি ইন্টিলেফেন্স প্রয়োজনীয় ত্রুটি দেখায় না


142

আমি আজ পাই যে পিএইচপি ইন্টেলিফেন্সের সর্বশেষ আপডেটের পরে, ইন্টেলিজগুলি আমার রুটের (এবং অন্যান্য শ্রেণির জন্য) একটি অপরিজ্ঞাত চিহ্নের জন্য ত্রুটি দেখিয়ে চলেছে, এর আগে এর আগে কোনও ত্রুটি নেই এবং এটি আমাকে বিরক্ত করছে।

এখানে ত্রুটি স্ক্রিনশট:

এখানে চিত্র বর্ণনা লিখুন

এবং এটি আমার কোড:

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
anoopjohn

আপনি যদি এই রুটে api.phpঅপরিজ্ঞাত ত্রুটি পেয়ে যাচ্ছেন তবে নীচে @ ব্যবহারকারী 12483351 এর উত্তর দেখুন। এটা আমার জন্য এটি স্থির। আমি ইন্টেলিফিজ ১.৩..6 এ আছি।
ডটনেট

উত্তর:


103

ইন্টিলেফেন্স ১.৩ এ অপরিবর্তিত প্রকার, ফাংশন, ধ্রুবক, শ্রেণির ধ্রুবক, পদ্ধতি এবং সম্পত্তি নির্ণয়ের যোগ করা হয়েছিল, যেখানে আগে 1.2 সালে কেবল অনির্ধারিত পরিবর্তনশীল ডায়াগনস্টিক ছিল।

কিছু ফ্রেমওয়ার্ক এমনভাবে রচনা করা হয় যা ব্যবহারকারীর জন্য সুবিধাজনক শর্টকাট সরবরাহ করে তবে স্ট্যাটিক বিশ্লেষণ ইঞ্জিনগুলিকে রানটাইমের সময় উপলভ্য প্রতীকগুলি আবিষ্কার করা শক্ত করে তোলে।

Https://github.com/barryvdh/laravel-ide-helper এর মতো স্টাব জেনারেটরগুলি এখানে শূন্যস্থান পূরণ করতে সহায়তা করে এবং লারাভেলের সাথে এটি ব্যবহার করে সহজেই আবিষ্কার করা যেতে পারে এমন প্রতীকগুলির সুনির্দিষ্ট সংজ্ঞা প্রদান করে অনেকগুলি ভুয়া ডায়াগনস্টিকের যত্ন নেবে।

তবুও, পিএইচপি একটি খুব নমনীয় ভাষা এবং কোডটি কীভাবে লেখা হয় তার উপর নির্ভর করে ভুয়া অপরিজ্ঞাত চিহ্নগুলির অন্যান্য উদাহরণ থাকতে পারে। এই কারণে, ১.৩.৩ থেকে, ইন্টেলিফেন্সের ওয়ার্কস্পেস এবং কোডিং স্টাইল অনুসারে প্রতিটি বিভাগকে অপরিজ্ঞাত চিহ্নের সক্রিয় / অক্ষম করার জন্য কনফিগার বিকল্প রয়েছে।

এই বিকল্পগুলি হ'ল: 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 টি আচরণ দেবে। ভিএসকোড সেটিংস ইউআই দেখুন এবং অনুসন্ধান করুন intelephense


বিরক্তিকর সতর্কতা সহ কয়েক দিন অতিবাহিত হয়েছে, এখন সাম্প্রতিক আপডেটের সাথে 1.3.3 - এটি সব ঠিক আছে .. ধন্যবাদ @ বেমউবার্ন
তরিকুল ইসলাম

1
পৃথক কনফিগারেশনের জন্য ধন্যবাদ, আপাতত আমি অপরিজ্ঞাতযুক্ত মেথডগুলি অক্ষম করেছি কারণ ইন্টেলিফেনস লার্যাভেল সহায়ককে শ্রেণি ra auth()->user()অ্যাপ \ ব্যবহারকারী হিসাবে সনাক্ত করতে পারে না so অ্যাপ \ এর ভিতরে ব্যবহারকারীদের কল করার পদ্ধতিটি auth()->user()ত্রুটি হিসাবে সনাক্ত করা হবে। আমি use Illuminate\Support\Facades\Route;অপ্রকাশিত প্রতীক রুটের ত্রুটিটি ঠিক করতে আমার রুটে যুক্ত করেছি।
ক্রিস্টহোফার নাটালিয়াস

2
এর জন্য ধন্যবাদ. আমার সেটআপের জন্য, কেবল ডাইবেবল intelephense.diagnostics.undefinedMethodsএবং intelephense.diagnostics.undefinedTypeকাজ করে।
কমুদ্রিঃ

laravel-ide-helperসতর্কতা স্থির। ধন্যবাদ!
জিওভানিপিডস

_ide_helper.phpডক্সে প্রস্তাবিত হিসাবে উত্পন্ন করার জন্য কেবল প্রয়োজন ।
জিওভানিপিডস

121

সংস্করণ 1.3.0 এর ত্রুটিযুক্ত আইএমও রয়েছে।
1.2.3 সংস্করণে ডাউনগ্রেড করা আমার সমস্যার সমাধান করে।

আমি আছি

  • লারাভেল 5.1
  • পিএইচপি 5.6.40

সংস্করণে ডাউনগ্রেড 1.2.3


3
হ্যাঁ, আমি মনে করি এটিই সেরা উত্তর, সমস্যাটি নতুন সংস্করণ
অ্যাড্রিয়ান এডি প্রাতামা

হ্যাঁ! আমার ঠিক একই সমস্যা ছিল, যা এক ঘন্টা আগে শুরু হয়েছিল যেমন ইন্টেলফেন্স ১.৩.০-তে আপডেট হয়েছে - এটি 1.2.3 এ ডাউনগ্রেড করে ফিক্স করেছে।
লিও

1
আমার জন্যও একই. আমি পিএইচপি 5.3.3 এ একটি প্রকল্পে কাজ করছি। একবার 1.3 সর্বত্র ত্রুটি ইনস্টল করা হয়েছিল। ইন্টেলিফেন্স এক্সটেনশন সেটিংয়ে পিএইচপি সংস্করণ 5.3.3 এ সেট করা হয়েছে ("ইন্টিলেফেনস.ইনোভাইরান.এফপিভিশন": "5.3.3") কিছুই করেনি। 1.2.3 এ ফিরে যাওয়া এটি স্থির করে।
বেন

2
@ অ্যালেক্স অন্যান্য সমস্যা আছে। আপনি কোয়েরি স্কোপ ইত্যাদির জন্য ত্রুটি পেতে চলেছেন এটি কেবল মুখোমুখি নয়।
মিলোস্লাভ মিলো জেনোভেক

2
আপনার কর্মক্ষেত্র এবং কোডিং স্টাইল অনুসারে ইন্টিলেফেন্স 1.3.3 আরও কনফিগারেশন বিকল্প যুক্ত করে। অপরিজ্ঞাত ডায়াগনস্টিকের প্রতিটি বিভাগ এখন উপযুক্ত / অক্ষম করা যেতে পারে।
bmewburn

19

আপনি যেটি করতে পারেন তা আপনার ডাউনগ্রেড করার দরকার নেই:

হয় সেটিংসে অপরিবর্তিত প্রতীক ডায়াগোনস্টিকগুলি অক্ষম করুন - "ইন্টিলেফেন্স.ডায়াগনস্টিক্স undউন্ডফাইন্ডসাইমবোলস": মিথ্যা।

অথবা একটি আদর্শ সহায়ক ব্যবহার করুন যা লারাভেল ফ্যাসাদগুলির জন্য স্টাবগুলি যুক্ত করে। Https://github.com/barryvdh/laravel-ide-helper দেখুন


3
আইডিই হেল্পার রুট ক্লোজার বা অন্যান্য
ক্লোজারগুলির

3
সুতরাং একটি সমস্যা সমাধানের জন্য আমাদের সঠিক ডায়াগোনস্টিকগুলি looseিলা করতে হবে। কোনভাবেই জোসি!
কার্লোস মোরা

আমি আইডিই হেল্পার ইনস্টল করেছি এবং নির্দেশাবলী অনুসারে ফাইলটি তৈরি করেছি .. এটি লারাভেল প্রকল্পে। এটি কোনও পরিবর্তন না করে উপস্থিত হয়েছিল এবং পুরো জায়গা জুড়ে এখনও অপরিবর্তিত চিহ্ন রয়েছে। সুতরাং আমি
২.২.৩ এ

15
use Illuminate\Support\Facades\Route;

সংশ্লিষ্ট নেমস্পেসটি আমদানির পরে সতর্কতা অদৃশ্য হয়ে গেল।

সংস্করণ

  • লার্ভেল 6+
  • vscode সংস্করণ 1.40.2
  • পিএইচপি ইন্টিলেফেন্স 1.3.1

এটি আসলে সমস্যাটি সমাধান করে। কনসোল.এফপি-র অভ্যন্তরের কমান্ডগুলির জন্য এটি এর পাশাপাশি কাজ করে: আলোকিত \ সহায়তা \ মুখোমুখি \ কারিগর ব্যবহার করুন;
অ্যালেক্স

এটি লারাভেল বাঞ্ছনীয় নয়। laravel-ide-helperকনফিগারেশন হয়।
জিওভানিপিডস

এটি যোগ করার ফলে সমস্যার সমাধান হয়েছে Route, তবে আমারও একই ত্রুটি ছিল Auth, তাই আমিও যুক্ত use Illuminate\Support\Facades\Auth;করেছি। সমস্যা সমাধান.
দাদাহাহ

13

1.3.1 এটি স্থির করে।

আপনার এক্সটেনশানটি কেবল আপডেট করুন এবং আপনার ভাল হওয়া উচিত


22
আমি ইতিমধ্যে v1.3.1 এ আছি তবে ত্রুটিটি প্রদর্শিত হচ্ছে।
আলট্রাসেড

আমিও, এখানে কোন সমাধান আছে বা আমাদের ডাউনগ্রেড করা উচিত?
টোনিক্স

3
আমার জন্য এটি কিছু সমাধান করে না। ১.২.৩ এ ফিরে যাব ঠিক আছে!
কার্লোস মোরা

1
1.3.1 এখনও আমার জন্য এই সমস্যা আছে। 1.2.3 এটি স্থির করেছে
নুল পয়েন্টার

2
আমি 1.3.2 এ আছি এবং এখনও স্থির নেই NOT পুনরায় ডাউনগ্রেড করা হয়েছে 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আইডিইকে Facades বুঝতে সহায়তা করার জন্য একটি ফাইল তৈরি করতে চালান । আপনাকে ভিজ্যুয়াল স্টুডিও কোডটি পুনরায় চালু করতে হবে।

তথ্যসূত্র

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

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


1
এর প্রবাদটি হ'ল আপনি নকল সংজ্ঞা পেয়েছেন
কার্লোস মোরা

@ কার্লোসমোরা আমার কাছে মনে হচ্ছে না। আপনি যা বলতে চেয়েছিলেন তা আমি পাইনি ...
জিওভান্নিপস

আমি লারাভেল 6.x ব্যবহার করছি এবং এটি কাজ করে works
হকিকো


Authআমি ভিএস কোড পুনরায় চালু করার পরে ইন্টিলেফেন্স হাইলাইট করা বন্ধ করে দিয়েছে । আমি এই উত্তরে প্রদর্শিত পদক্ষেপগুলি ঠিক করেছি। ভিএস কোড পুনরায় চালু করার পরে, এটি এক বা দুই মিনিট দিন এবং ত্রুটিগুলি পরিষ্কার হওয়া উচিত।
agm1984

6

লারাভেলকে বোঝার জন্য এটি আপনার সম্পাদকের পক্ষে সত্যই কনফিগারেশনের একটি সেট।

আপনি যদি এটি সমস্ত ম্যানুয়ালি কনফিগার করতে চান তবে এখানে রেপো রয়েছে । এটি ভিএস কোড এবং পিএইচপিস্টোরম উভয়ের জন্য।

অথবা আপনি যদি চান তবে আপনি এই প্যাকেজটি ডাউনলোড করতে পারেন ((আমি তৈরি করেছি) এটি বিশ্বব্যাপী ইনস্টল করার জন্য প্রস্তাবিত।

এবং তারপর শুধু চালান andylaravel setupIDE। এটি আপনার জন্য মুঠো রেপো অনুসারে সবকিছু কনফিগার করবে।


5

না, ত্রুটিগুলি কেবলমাত্র ইন্টেলিফেন্স এক্সটেনশানটি স্বয়ংক্রিয়ভাবে আপডেট হওয়ার পরে ঘটে।

সমস্যা সমাধানের জন্য, আপনি এটি পূর্ববর্তী সংস্করণে ডাউনগ্রেড করতে পারেন ইন্টেলিফেন্স এক্সটেনশনে "অন্য সংস্করণ ইনস্টল করুন" ক্লিক করে। 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

1.3.3 এটি স্থির করেছে। শুধু আপনার এক্সটেনশান আপডেট করুন।


কেবল এটি আপডেট করা নয় তবে আপনাকে অবশ্যই @bmewburn জবাব যা বলেছিল তার মতো কিছু বৈশিষ্ট্য অক্ষম করতে হবে
অ্যাড্রিয়ান এডি

0

আমারও একই সমস্যা ছিল এবং নিম্নলিখিতগুলি দেখে মনে হয়েছে যে বিষয়টি সমাধান করেছে।

ক) সর্বশেষতম সংস্করণ 1.3.5 এ আপডেট হয়েছে এবং সমস্ত নির্ণয়ের সেটিংস পুনরায় সক্ষম করেছে।

আমি এখনও বার্তা পেয়েছিলাম

খ) কর্মক্ষেত্রে নির্ভরযোগ্য গ্রন্থাগারগুলির সাথে বিক্রেতা ফোল্ডার যুক্ত করা হয়েছে

এটি সমস্যার সমাধান করেছে বলে মনে হচ্ছে।


আপনি ব্যবহার করতে পারেনlaravel-ide-helper
জিয়োভানিপডস

ভকভগক. আমি দ্রুপালের ভিতরে সিমফনি ব্যবহার করছি। লারাভেল-আদর্শ-সহায়ক সাহায্য করবে?
আনুপজাহান

0

যে কেউ এই সমস্যাগুলির মধ্যে যাচ্ছেন এবং পুরো চেকটি অক্ষম করার বিষয়ে অস্বস্তিতে রয়েছেন, আপনার নিজস্ব কাস্টম স্বাক্ষরগুলি ইন্টেলিফেন্সে দেওয়ার জন্য একটি উপায় রয়েছে (আমি ভিএসকোড ব্যবহার করি তবে ভিজ্যুয়াল স্টুডিও কোডের ক্ষেত্রে এটি একই কাজ করা উচিত)।

ইন্টেলিজ রেপোর মন্তব্য থেকে অনুলিপি করা হয়েছে (@ ক্যাপিটানঅকিজিস্টি দ্বারা):
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100

একক কর্মক্ষেত্রের জন্য এটি খুব সহজ, আপনাকে .phpসমস্ত স্বাক্ষর সহ ফাইল তৈরি করতে হবে এবং ইন্টিলেফেন্সগুলি সেগুলি সূচক করে দেবে।

আপনি যদি বিশ্বব্যাপী স্টাবগুলি যুক্ত করতে চান তবে আপনি এখনও এটি করতে পারেন তবে এটির বৈশিষ্ট্যটি নির্দিষ্ট করে কিনা তা নিশ্চিত । এমনকি যদি intelephense.stubsভুল মান সম্পর্কে সতর্কতা ছুড়ে দেয় তবে আপনি সেখানে কোনও ফোল্ডারের নাম রাখতে পারেন।

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

দ্রষ্টব্য: স্টাবগুলি এই সেটিং পরিবর্তনের সাথে সতেজ করা হয়েছে।

আপনি এখানে বিল্ড-ইন স্টাবগুলি একবার দেখে নিতে পারেন: https://github.com/JetBrains/phpstorm-stubs

আমার ক্ষেত্রে, আমার ত্রুটি হিসাবে হাইলাইট না করার জন্য describe, ডিএসপেকের beforeEach,, it... দরকার ছিল , তাই আমি স্রেফ স্বাক্ষর সহ ফাইলটি /directories_and_paths/app/vendor/bin/dspecআমার ভিএসকোডের ওয়ার্কস্পেস সেটিংসে অন্তর্ভুক্ত করেছি, যার ফাংশন সংক্রান্ত ডিক্লেমেশনগুলি আমার দরকার ছিল:

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

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

// ... and so on
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.