Netbeans (PHP) में परिवर्तनीय प्रकार संकेत


85

बस नियमित रूप से चर के लिए टाइप संकेत देने के लिए netbeans में एक तरीका है, तो उत्सुक है, ताकि intellisense इसे उठाता है। मुझे पता है कि आप इसे क्लास प्रॉपर्टीज, फंक्शन पैरामीटर्स, रिटर्न टाइप्स आदि के लिए कर सकते हैं, लेकिन मैं यह पता नहीं लगा सकता कि इसे रेगुलर वेरिएबल के लिए कैसे किया जाए। यह ऐसी चीज है जो वास्तव में उन स्थितियों में मदद करेगी जहां आपके पास एक ऐसी विधि है जो विभिन्न ऑब्जेक्ट प्रकार (सेवा लोकेटर की तरह) वापस कर सकती है।

कुछ इस तरह से:

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

बाद में $ someService का उपयोग करते हुए, netbeans कक्षा Some_Service में परिभाषित सभी उपलब्ध तरीके प्रदान करेगा।


1
यह एक वर्ग के अंदर काम करता है, सदस्यों के लिए, लेकिन मुझे नहीं पता कि इसे कार्यों या प्रक्रियात्मक कोड में कैसे करना है।
डेविड स्नेबेल-कॉंट

1
मैं इसे PHP IDE में वैरिएबल टाइप हिंटिंग में बदलने के बारे में सोचूंगा क्योंकि इस प्रकार की टिप्पणी को सभी सामान्य IDE (NEBBeans, Eclipse, ...) में काम करना चाहिए।
Shadyyx

जवाबों:


186

एक एकल पंक्ति आपको सभी की आवश्यकता है:

/* @var $varName Type_Name */

इस लेख को नेटबीन्स PHP ब्लॉग में देखें: https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in

नोट: कम से कम, संस्करण 8.2 में; कुंजी लगता है:

  • एकल तारांकन (के /*बजाय /**)।
  • चर नाम के बाद प्रकार रखकर।
  • टाइप-हिंटिंग से पहले और बाद में कुछ भी न होना (सफ़ेद-स्थान को छोड़कर, लेकिन यह भी अनुमति नहीं है, जब टिप्पणी एक ही पंक्ति में न हो)।

16
यहाँ कुंजी एकल तारांकन / * के बजाय / ** लगती है। कम से कम, संस्करण 8.0 में। धन्यवाद।
साइफ्रे

1
लगता है अगर हम vdoc का उपयोग करने की आवश्यकता नहीं है, तो हमें ऑब्जेक्ट प्रॉपर्टी के लिए vdoc का उपयोग करने की आवश्यकता है, अर्थात $this->obj = $serviceLocator->get('obj');यदि मैं इसका उपयोग /* @var $obj Obj */नहीं करता हूं तो ...
shadyyx

2
@shadyyx इस मामले में आपको /** @var Type_Name */इस पोस्ट को देखना चाहिए ?
प्रेषित

6
याद रखें कि आप vdocउस चर के ऊपर की रेखा पर टाइप कर सकते हैं जिसे आप दस्तावेज़ में ले जा रहे हैं और फिर हिट करें Tabऔर जो कि ऊपर दिए गए doc ब्लॉक @johannes पोस्ट को स्वचालित रूप से बनाने के लिए मैक्रो के रूप में कार्य करेगा।
टॉम ऑस्टर

1
यदि आप नेटबिन को वैकल्पिक सिंटैक्स का समर्थन करना चाहते हैं, तो कृपया टिप्पणी करें / फ़ीचर अनुरोध पर वोट करें: netbeans.org/bugzilla/show_bug.cgi?id=267470
marcovtwout

24

मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन मैं एक्लिप्स / ज़ेंड स्टूडियो के लिए एक समान उत्तर की तलाश कर रहा था और इसने इसे हल भी कर दिया।

** ध्यान दें कि यह इस शैली में खुलने और बंद होने के साथ एक ही लाइन पर होना चाहिए ...

/* @var $varName Type_Name */

कोई अन्य प्रारूप नहीं ...

/**
 * @var $varName Type_Name
 */ 

या ...

// @var $varName Type_Name

काम करने के लिए लग रहा था। आशा है कि किसी की मदद करता है।


पिछली बार बताई गई डबल स्लैश पद्धति का उपयोग करना मेरे लिए नेटबिन्स 7.2
डेविड

1
@ डेविड यह वह अच्छी तरह से नहीं पढ़ सकता है, लेकिन मैंने कहा कि केवल पहला काम करता है। हालाँकि, दोनों ही अन्य मान्य टिप्पणियाँ हैं, दोनों में से कोई भी प्रकार की हिंटिंग प्रणाली के साथ काम नहीं करता है, कम से कम जहाँ तक ग्रहण जाता है, नेटबीन्स के बारे में निश्चित नहीं है।
उसील

1
Netbeans (8.01) केवल / * का उपयोग करते हुए पहले विकल्प को स्वीकार करता है, लेकिन phpStorm (8) / ** का भी समर्थन करता है।
जोप वान रायजै

9

आप उन pesky जादू चर दस्तावेज़ करने के लिए देख रहे हैं ? (मैंने किया; यह प्रश्न वर्तमान में Google में इसके लिए शीर्ष परिणाम देता है। मुझे आशा है कि यह किसी की मदद करता है!)

@propertyटैग आप दस्तावेज़ के लिए अनुमति देता है जादू का उपयोग करने वालों को लागू किया - php चर __get()और __set()। टैग का उपयोग दस्तावेज़ में तुरंत वर्ग परिभाषा से पहले किया जाना चाहिए:

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

यह अंकन स्वत: पूर्ण हो जाता है, नेटबियंस 8.1 और PhpStorm 2016.1 में परीक्षण किया गया।

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


3

इस बग रिपोर्ट के अनुसार , वाक्यविन्यास 9 NetBeans में बदल जाएगा :

/* @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

Netbeans 8.0.2 में, vdoc टेम्पलेट आपको यह देता है:

/* @var $variable type */

नेटबींस हालांकि इसे मान्यता नहीं देगा, और आपको अपनी वस्तुओं के लिए सही स्वत: पूर्ण सूची नहीं देगा। इसके बजाय अपने परिवर्तनीय घोषणा से पहले इसका उपयोग करें:

/** @var objectType $varName */

मैं वास्तव में स्टॉक vdoc के लिए एक महान उपयोग नहीं देखा है टेम्पलेट के , विशेष रूप से वर्ग चर कि PDO या PDOStatement वस्तुओं के रूप में इस्तेमाल किया जा रहे हैं के लिए।

मेरे द्वारा उपयोग किया जाने वाला एक समाधान वास्तव में टूल / विकल्प / संपादक / कोड टेम्प्लेट्स (PHP के साथ आपकी भाषा के रूप में चयनित) में जाने के लिए है, और एक नया टेम्पलेट जोड़ें। मैंने मेरा इशारा किया । फिर विस्तारित पाठ के तहत, निम्नलिखित टेम्पलेट का उपयोग करें:

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

3
हम्म, मेरे पास एनबी 8.0.2 है और मेरे लिए यह दूसरा तरीका है। / * @Var $ चर प्रकार * / ठीक काम करता है। मैंने टेम्प्लेट के लिए आपके पैच का उपयोग करने का प्रयास किया। लेकिन यह काम नहीं किया।
userfuser

1
मुझे यकीन नहीं है कि जब मैं पहली बार इस answe पोस्ट किया था netbeans की मेरी कॉपी के साथ क्या हो रहा था, लेकिन मैं अब 8.2 का उपयोग कर रहा हूं। / * @var $ varName varType * / बस ठीक काम करता है।
माइक

0

NetBeans IDE 8.2 के लिए सिंटैक्स इस प्रकार है:

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

यह कम से कम स्थिर चर के लिए ठीक प्रकार के संकेत प्रदान करेगा।

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