2012-07-31 23 views
6

यह (जैसे इन चर के साथ एक और समारोह फोन करने के लिए) सभी तर्कों एक समारोह के हेडर में घोषित का उपयोग कर के लिए एक NetBeans कोड टेम्पलेट लिखने के लिए संभव है? तर्कों की संख्या अलग हो सकती है, इसलिए यह आसान प्रतीत नहीं होता है।NetBeans कोड टेम्पलेट सभी तर्क समारोह के शीर्षक में घोषित प्रयोग करने के लिए

उदाहरण के लिए, कभी-कभी मैं डिबगिंग उद्देश्यों के लिए किसी फ़ंक्शन में सभी तर्कों को मुद्रित करना चाहता हूं।

function testModule_block_view($delta = '') { 
    dsm($delta, '$delta in ' . __FUNCTION__ . '()'); 
    $block = array(); 
    // ..... 
    return $block; 
} 

जैसा कि आप देख सकते हैं, वहाँ:

function testModule_theme($existing, $type, $theme, $path) { 
    dsm($existing, '$existing in ' . __FUNCTION__ . '()'); 
    dsm($type, '$type in ' . __FUNCTION__ . '()'); 
    dsm($theme, '$theme in ' . __FUNCTION__ . '()'); 
    dsm($path, '$path in ' . __FUNCTION__ . '()'); 

    return array(
    // ...... 
); 
} 

यहाँ एक और एक है:


यहाँ एक उदाहरण के उपयोग (तर्क की संख्या के आधार पर बुला dsm() समारोह कई बार) है पहले मामले में 4 तर्क हैं, और दूसरे में केवल 1। दिए गए फ़ंक्शन के आधार पर तर्कों का नाम भी बदल रहा है।

मैं पहले से ही dsm() समारोह का उपयोग कर के लिए लिखा था एक कोड टेम्पलेट है:

ddsm code template

dsm($$${VARIABLE newVarName default="variables"}, '$$${VARIABLE} in '.__FUNCTION__.'()'); 

इस तरह से मैं सिर्फ टाइप ddsm, टैब मारा, और फिर मैं का सही नाम लिखने की आवश्यकता परिवर्तनीय तो इसे बाहर निम्नलिखित प्रिंट होगा:

dsm($variables, '$variables in ' . __FUNCTION__ . '()'); 

उसके बाद, मैं variables हिस्सा बदल सकते हैं, और एक अन्य नाम टाइप करें, और एक ही स्ट्रिंग में इस्तेमाल किया जाएगा। एक उदाहरण:

Using ddsm code template

लेकिन मैं अभी भी बहुत टाइप करने के लिए है कि सामान सुस्त हूँ: डी, ​​और मैं उत्सुक हूँ अगर वहाँ किसी दिए गए समारोह के सभी तर्क का उपयोग करने के लिए एक रास्ता है जब एक कोड टेम्पलेट का उपयोग कर NetBeans में।

उत्तर

2

यह वास्तव में मुश्किल लगता है। क्या आप मैक्रो का उपयोग किया जाएगा जब आप समारोह की घोषणा जानता था, तो आप इस तरह टेम्पलेट का उपयोग कर सकते हैं:

// shortcut dsmfun1 
function ${FUNCTION_NAME}($$${PAR1}) { 
    dsm($$${PAR1}, '$$${PAR1} in ' . __FUNCTION__ . '()'); 

    ${selection}${cursor} 
} 

... 

// shortcut dsmfun4 
function ${FUNCTION_NAME}($$${PAR1}, $$${PAR2}, $$${PAR3}, $$${PAR4}) { 
    dsm($$${PAR1}, '$$${PAR1} in ' . __FUNCTION__ . '()'); 
    dsm($$${PAR2}, '$$${PAR2} in ' . __FUNCTION__ . '()'); 
    dsm($$${PAR3}, '$$${PAR3} in ' . __FUNCTION__ . '()'); 
    dsm($$${PAR4}, '$$${PAR4} in ' . __FUNCTION__ . '()'); 

    ${selection}${cursor} 
} 

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

यदि आप बाद में इन मैक्रोज़ जोड़ रहे हैं, तो आप this doc पर एक नज़र रखना चाहेंगे और अपना वांछित व्यवहार लागू कर सकते हैं (भले ही यह काफी मुश्किल हो)।

आशा है कि इससे मदद मिलती है!

+0

+1, धन्यवाद, यह एक बहुत अच्छा विचार है, लेकिन इसका मतलब यह है कि मैं इन कार्यों के लिए के रूप में कई तर्क मैं इन कार्यों में की आवश्यकता होगी के रूप में कई कोड खाका बनाने के लिए है । लेकिन मैं इसके बारे में सोचूंगा! – Sk8erPeter

1

आप एक शॉट में उन्हें पास करने के लिए get_defined_vars() का उपयोग क्यों नहीं करते? इस तरह, आपके मैक्रो को केवल एक स्थिर रेखा होने की आवश्यकता है।

function dsm($func, array $args) 
{ 
    foreach ($args as $name => $value) { 
     echo "in $func, arg '$name' is $value\n"; 
    } 
} 

function testModule_theme($existing, $type, $theme, $path) { 
    dsm(__FUNCTION__, get_defined_vars()); 
} 

testModule_theme(1, 2, 3, 4); 

आउटपुट:

in testModule_theme, arg 'existing' is 1 
in testModule_theme, arg 'type' is 2 
in testModule_theme, arg 'theme' is 3 
in testModule_theme, arg 'path' is 4 
+0

+1, यह एक बहुत अच्छा विचार है, लेकिन मैं हमेशा सभी चरों को मुद्रित नहीं करना चाहता हूं, कई मामलों में, मैं उनमें से एक या दो को टिप्पणी करना चाहता हूं, यही कारण है कि मैं अलग-अलग लाइनों को "आरक्षित" करना चाहता था इन डीबगिंग सामान के लिए। (वैसे, [डीएसएम()] (http://api.drupal.org/api/devel/devel.module/function/dsm/7) ड्रूपल के डेवेल मॉड्यूल में एक फ़ंक्शन है।) – Sk8erPeter