2012-07-31 10 views
6

E 'possibile scrivere un modello di codice NetBeans per utilizzando tutti gli argomenti dichiarati nell'intestazione di una funzione (ad esempio per chiamare un'altra funzione con queste variabili) ? Il numero degli argomenti può essere diverso, quindi non sembra essere facile.NetBeans modello di codice per l'utilizzo di tutti gli argomenti dichiarati nell'intestazione della funzione

Ad esempio, a volte desidero stampare tutti gli argomenti in una funzione a scopo di debug.


Ecco un esempio di utilizzo (chiamando dsm() funzione più volte a seconda del numero degli argomenti):

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(
    // ...... 
); 
} 

Ecco un altro:

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

Come si può vedere, ci sono 4 argomenti nel primo caso e solo 1 nel secondo. Il nome degli argomenti cambia anche a seconda della funzione data.

C'è un modello di codice ho già scritto per l'utilizzo di dsm() funzione:

ddsm code template

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

questo modo mi basta digitare ddsm, ha colpito Tab, e poi devo digitare il nome esatto del la variabile. Quindi sarebbe stampare la seguente:

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

Dopo di che, posso cambiare la parte variables e digitare un altro nome, e lo stesso sarebbe stato utilizzato nella stringa. Un esempio:

Using ddsm code template

Ma sono ancora troppo ritardatario di digitare quella roba: D, e io sono curioso di sapere se c'è un modo per utilizzare tutti gli argomenti di una data funzione quando si utilizza un modello di codice in NetBeans.

risposta

2

Questo sembra davvero difficile. Se sapessi che verrà utilizzato la macro quando si dichiara la funzione, è possibile utilizzare i modelli come questo:

// 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} 
} 

modelli Coppia dare dichiarazione molto veloce e si deve digitare i nomi dei parametri solo una volta.

Se si aggiungono successivamente queste macro, è possibile dare un'occhiata a this doc e implementare il comportamento desiderato (anche se ciò potrebbe essere piuttosto complicato).

Spero che questo aiuti!

+0

+1, grazie, questa è una buona idea, ma ciò significherebbe che devo creare il numero di modelli di codice per queste funzioni, come tanti argomenti avrei bisogno in queste funzioni . Ma ci penserò! – Sk8erPeter

1

Perché non usi semplicemente get_defined_vars() per passarli tutti in una volta? In questo modo, la tua macro deve essere solo una singola linea statica.

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

uscita:

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, questa è un'ottima idea, ma non sempre voglio stampare tutte le variabili, in molti casi, voglio commentare uno o due di esse, ecco perché volevo "riservare" righe separate per questi articoli di debug. (A proposito, [dsm()] (http://api.drupal.org/api/devel/devel.module/function/dsm/7) è una funzione del modulo Devel di Drupal.) – Sk8erPeter

Problemi correlati