নেটবিনে পরিবর্তনশীল প্রকারের ইঙ্গিত (পিএইচপি)


86

নিয়মিত ভেরিয়েবলের জন্য টাইপ ইঙ্গিত দেওয়ার জন্য যদি নেটবিনের কোনও উপায় থাকে তবে কেবল কৌতূহল, যাতে ইন্টেলিসেন্স এটি গ্রহণ করে। আমি জানি আপনি এটি শ্রেণীর বৈশিষ্ট্য, ফাংশন প্যারামিটার, রিটার্নের ধরণের ইত্যাদির জন্য করতে পারেন তবে নিয়মিত ভেরিয়েবলগুলির জন্য এটি কীভাবে করা যায় তা আমি বুঝতে পারি না। এটি এমন একটি জিনিস যা সত্যিই এমন পরিস্থিতিতে সহায়তা করবে যেখানে আপনার কাছে এমন একটি পদ্ধতি রয়েছে যা বিভিন্ন অবজেক্টের ধরণ (যেমন কোনও পরিষেবা লোকেটার) ফেরত দিতে পারে।

প্রাক্তন কিছু যেমন:

/**
 * @var Some_Service $someService
 */
$someService = ServiceLocator::locate('someService');

পরে $ সামসোরিয়াস ব্যবহার করার সময় নেটবিনস সামার_সেবার শ্রেণিতে সংজ্ঞায়িত সমস্ত উপলব্ধ পদ্ধতি সরবরাহ করবে।


4
এটি সদস্যদের জন্য কোনও শ্রেণীর অভ্যন্তরে কাজ করে তবে আমি কীভাবে এটি ফাংশন বা পদ্ধতিগত কোডে করব তা জানি না।
ডেভিড স্নাবেল-কাউন্ট

4
আমি পিএইচপি আইডিইগুলিতে এই পরিবর্তনশীল প্রকারের ইঙ্গিতটির নামকরণের বিষয়ে ভাবব কারণ এই ধরণের মন্তব্যটি সমস্ত সাধারণ আইডিইতে (নেটবিয়ানস, একলাইপস, ...) কাজ করা উচিত।
shadyyx

উত্তর:


187

আপনার প্রয়োজন একটাই লাইন:

/* @var $varName Type_Name */

নেটবিন্স পিএইচপি ব্লগে এই নিবন্ধটি দেখুন: https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in

দ্রষ্টব্য: কমপক্ষে, 8.2 সংস্করণে; মূলটি মনে হয়:

  • একক নক্ষত্র ( /*পরিবর্তে /**)।
  • পরিবর্তনশীল নামের পরে প্রকার স্থাপন করা।
  • টাইপ-হিন্টিংয়ের আগে এবং পরে কিছুই নেই (শ্বেত স্থান ব্যতীত, তবে এমনকি মন্তব্যটি যখন এক লাইনে নেই তখনও এটি অনুমোদিত নয়)।

17
এখানে কীটি / ** এর পরিবর্তে একক নক্ষত্র / * বলে মনে হচ্ছে। কমপক্ষে, 8.0 সংস্করণে। ধন্যবাদ
সাইফার

4
অবজেক্ট প্রোপার্টিটির জন্য আমাদের $this->obj = $serviceLocator->get('obj');যদি ভিডোক ব্যবহার করা দরকার হয় তবে আদৌ কাজ না করা বলে মনে হচ্ছে, উদাহরণস্বরূপ যদি আমি /* @var $obj Obj */এটি ব্যবহার করি তবে এটি কাজ করে না ...
শ্যাডিক্স

4
@ শাদিয়াক্স এই ক্ষেত্রে আপনার ব্যবহার করা উচিত /** @var Type_Name */, এই পোস্টটি দেখুন ?
প্রেরিত 14

6
মনে রাখবেন যে আপনি যে vdocভেরিয়েবলটি ডকুমেন্ট করতে যাচ্ছেন তার উপরে লাইনটি টাইপ করতে পারেন এবং তারপরে হিট করুন Tabএবং এটি উপরের ডক ব্লক @ জোহান্নেস পোস্টগুলি স্বয়ংক্রিয়ভাবে তৈরি করতে ম্যাক্রো হিসাবে কাজ করবে।
টম অগার

4
: আপনি NetBeans পাশাপাশি, দয়া করে মন্তব্য / বৈশিষ্ট্য অনুরোধ ভোট বিকল্প syntaxes সমর্থন করার জন্য চান netbeans.org/bugzilla/show_bug.cgi?id=267470
marcovtwout

24

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি এক্লিপস / জেন্ড স্টুডিওর জন্য অনুরূপ উত্তর খুঁজছিলাম এবং এটিও এটি সমাধান করেছে।

** নোট করুন যদিও এটি অবশ্যই একটি একক লাইনে এই শৈলীতে খোলার সাথে এবং স্পষ্টভাবে বন্ধ হওয়ার সাথে ...

/* @var $varName Type_Name */

অন্য কোনও ফর্ম্যাট নেই কিনা ...

/**
 * @var $varName Type_Name
 */ 

বা ...

// @var $varName Type_Name

আদৌ কাজ মনে হয়েছিল। আশা করি যে কাউকে সাহায্য করবে।


সর্বশেষে তালিকাভুক্ত ডাবল স্ল্যাশ পদ্ধতিটি নেটবিনস 7.2
ডেভিড

4
@ ডেভিড এটি ভাল না পড়তে পারে, তবে আমি বলেছিলাম যে কেবল প্রথম কাজ করে। যদিও অন্য দু'জনেরই বৈধ মন্তব্য, তবে তাদের দু'টিই হিন্টিং টাইপ প্রকারের সাথে কাজ করে না, অন্তত যতক্ষণ গ্রহন হয়, নেটবিন সম্পর্কে নিশ্চিত নয়।
আউটপুট

4
নেটবিয়ানস (8.01) কেবল প্রথম বিকল্পটি গ্রহণ করে / * ব্যবহার করে তবে পিএইচপিস্টোরম (8) পাশাপাশি / ** সমর্থন করে।
জোপ ভ্যান রায়জ

9

আপনি কি এই উদ্বেগপূর্ণ যাদু ভেরিয়েবলগুলি নথিভুক্ত করছেন ? (আমি করেছি; এই প্রশ্নটি বর্তমানে গুগলে এর জন্য শীর্ষ ফলাফলের মধ্যে রয়েছে ks আমি আশা করি এটি কাউকে সহায়তা করবে!)

@propertyট্যাগ আপনি নথিতে করতে পারবেন জাদু ব্যবহার করছেন তাদের বাস্তবায়িত - পিএইচপি ভেরিয়েবল __get()এবং __set()। ট্যাগটি ক্লাস সংজ্ঞার তত্ক্ষণাত ডকুমেন্টেশনে ব্যবহার করা উচিত:

/**
 * Class Contact
 * @property string $firstName
 * @property string $lastName
 */
class Contact extends Model {
   ...

এই স্বরলিপি স্বতঃপূরণকে ট্রিগার করে, নেটবিনস ৮.১ এবং পিএইচপিস্টোরম ২০১.1.১ এ পরীক্ষিত।

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


3

এই বাগের প্রতিবেদন অনুসারে , সিনট্যাক্সটি নেটবিন্স 9 এ পরিবর্তিত হবে :

/* @var $variable VarType */    // vdoc1 (legacy syntax)
/** @var VarType $variable */   // vdoc (new syntax)

এছাড়াও, এটি উল্লেখযোগ্য যে আপনি []কোনও শ্রেণীর নামের সাথে যুক্ত করতে পারেন অবজেক্টগুলির একটি অ্যারে নির্দেশ করতে:

/* @var $foos Foo[] */
$foos = // ...

foreach ($foos as $foo) {
    // $foo will be hinted as Foo here
}

এবং আপনার useবিবৃতি ভুলবেন না , যেমনuse Foo;


2

নেটবিন ৮.০.২ তে , vdoc টেমপ্লেট আপনাকে এটি দেয়:

/* @var $variable type */

নেটবিনগুলি তবে এটি স্বীকৃতি দেবে না এবং আপনাকে আপনার সামগ্রীর জন্য সঠিক স্বতঃপূরণ তালিকা দেবে না। পরিবর্তে এটি ব্যবহার করুন, আপনার পরিবর্তনশীল ঘোষণার ঠিক আগে:

/** @var objectType $varName */

স্টক vdoc টেমপ্লেটের জন্য আমি সত্যিই দুর্দান্ত ব্যবহার দেখিনি , বিশেষত ক্লাস ভেরিয়েবলগুলির জন্য যা PDO বা PDOStatement অবজেক্ট হিসাবে ব্যবহৃত হতে চলেছে।

আমি যে সমাধানটি ব্যবহার করি তা হ'ল আসলে সরঞ্জাম / বিকল্প / সম্পাদক / কোড টেম্পলেটগুলিতে যাওয়া (আপনার ভাষা হিসাবে নির্বাচিত পিএইচপি সহ) এবং একটি নতুন টেম্পলেট যুক্ত করা। আমি আমার ইঙ্গিত ডাকলাম । তারপরে প্রসারিত পাঠ্যের অধীনে নিম্নলিখিত টেম্পলেটটি ব্যবহার করুন:

/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */

4
এইচএম, আমার কাছে এনবি 8.0.2 রয়েছে এবং আমার কাছে এটি অন্যান্য উপায়। / * @Var $ ভেরিয়েবল টাইপ * / ঠিকঠাক কাজ করে। আমি টেম্পলেটগুলির জন্য আপনার প্যাচটি ব্যবহার করার চেষ্টা করেছি। তবে এটি কার্যকর হয়নি।
ব্যবহারকারীফিউজার

4
আমি নিশ্চিত নই যে আমার নেটবিনের অনুলিপিটি নিয়ে ঠিক কী চলছে আমি যখন প্রথম এই উত্তরটি পোস্ট করেছি তবে আমি এখন 8.2 ব্যবহার করছি। / * @var $ varName varType * / ঠিকঠাক কাজ করে।
মাইক

0

নেটবিয়ান আইডিই 8.2 এর সিনট্যাক্স এর মত:

class foobar{
    /** @var string $myvar: optional description here **/
    protected static $myvar;
}

এটি কমপক্ষে স্থিতিশীল ভেরিয়েবলের জন্য সঠিকভাবে হিন্ট সরবরাহ করবে।

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