6

関数のヘッダーで宣言されたすべての引数を使用するための NetBeans コード テンプレートを作成することはできますか(たとえば、これらの変数を使用して別の関数を呼び出すため) ? 引数の数は異なる場合があるため、簡単ではないようです。

たとえば、デバッグ目的で関数内のすべての引数を出力したい場合があります。


使用例を次に示します (dsm()引数の数に応じて関数を複数回呼び出します)。

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

ここに別のものがあります:

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

ご覧のとおり、最初のケースには 4 つの引数があり、2 番目のケースには 1 つしかありません。引数の名前も、指定された関数に応じて変化しています。

dsm()関数を使用するために既に作成したコード テンプレートがあります。

ddsm コード テンプレート

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

この方法ではddsm、 、 hitTabと入力するだけで、変数の正確な名前を入力する必要があります。したがって、次のように出力されます。

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

その後、variablesパーツを変更して別の名前を入力すると、同じ名前が文字列で使用されます。例:

ddsm コード テンプレートの使用

しかし、私はまだそのようなものを入力するのが遅すぎます:D。NetBeans でコードテンプレートを使用するときに、特定の関数のすべての引数を使用する方法があるかどうかに興味があります。

4

2 に答える 2

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

いくつかのテンプレートを使用すると、非常に迅速に宣言でき、パラメーターの名前を一度だけ入力する必要があります。

これらのマクロを後で追加する場合は、このドキュメントを参照して、目的の動作を実装することをお勧めします (これは非常に難しいかもしれませんが)。

お役に立てれば!

于 2012-08-17T13:05:45.413 に答える
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
于 2012-08-17T17:42:44.990 に答える