2012-07-31 7 views
6

Czy to możliwe, aby napisać szablon kodu NetBeans dla korzystając wszystkie argumenty zadeklarowane w nagłówku funkcji za (np za wywołanie innej funkcji z tych zmiennych) ? Liczba argumentów może być różna, więc nie wydaje się to łatwe.NetBeans kod szablonu do korzystania wszystkie argumenty zadeklarowane w nagłówku danej funkcji

Na przykład, czasami chcę wydrukować wszystkie argumenty funkcji dla celów debugowania.


Oto przykład użycia (wywołanie dsm() funkcyjnych wielokrotnie w zależności od liczby argumentów):

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

Oto jeszcze jeden:

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

Jak widać, istnieje są 4 argumenty w pierwszym przypadku i tylko 1 na drugim. Nazwa argumentów zmienia się również w zależności od danej funkcji.

Istnieje szablon kod pisałem już za korzystanie dsm() funkcję:

ddsm code template

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

w ten sposób po prostu wpisać ddsm, uderzył Tab, a potem muszę wpisać dokładną nazwę zmienna. Więc byłoby wydrukować następujące:

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

Po tym, można zmienić variables udział i wpisz inną nazwę, a tym samym może być wykorzystana w ciągu. Przykład:

Using ddsm code template

Ale wciąż jestem zbyt laggard wpisywać tych rzeczy: D, a ja jestem ciekaw, czy istnieje sposób, aby wykorzystać wszystkie argumenty danej funkcji przy użyciu szablonu kodu w NetBeans.

Odpowiedz

2

To naprawdę wydaje się trudne. Gdybyś wiedział, będzie pomocą makra, jeśli zadeklarować funkcję, można użyć szablonów tak:

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

Para szablony daje naprawdę szybki deklarację i trzeba wpisywać nazwy parametrów tylko raz.

Jeśli dodajesz te makra później, możesz chcieć rzucić okiem na this doc i wprowadzić pożądane zachowanie (nawet jeśli może to być dość trudne).

Mam nadzieję, że to pomoże!

+0

+1, dzięki, że to bardzo dobry pomysł, ale to znaczy, że muszę utworzyć wiele szablonów kodu dla tych funkcji, jak wiele argumentów musiałbym w tych funkcji . Ale pomyślę o tym! – Sk8erPeter

1

Dlaczego nie można po prostu użyć get_defined_vars(), aby przekazać je wszystkie w jeden strzał? W ten sposób Twoje makro musi być pojedynczą linią statyczną.

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

wyjściowa:

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, to bardzo dobry pomysł, ale nie zawsze chcę wydrukować wszystkie zmienne, w wielu przypadkach chcę skomentować jedną lub dwie z nich, dlatego chciałem "zarezerwować" osobne linie do tych rzeczy do debugowania. (Nawiasem mówiąc, [dsm()] (http://api.drupal.org/api/devel/devel.module/function/dsm/7) jest funkcją w module Devel Drupala.) – Sk8erPeter

Powiązane problemy