0

さまざまな数の引数を受け入れるスクリプトがあります。

func_get_args を使用して、上記の引数に対して操作を実行したいと考えています。次のような関数が 1 つある場合:

function Something() {
   foreach(func_get_args($this) as $functions) {
       // Do something
   }

   // Return..
}

たとえば、エントリを追加/保存する別の関数でこの関数を呼び出すことができるようにしたいと考えています。add/save 関数には、「タイトル」、「説明」などの引数があります。

基本的に、関数呼び出しのコンテキストを検出する方法があるかどうかを知りたいです。特定の関数で呼び出されたことを知らせる func_get_args に何かを渡すことはできますか? だから私がするなら:

function Save($title, $desc) {
$vars = $this->Something();
}

それらを変更した後、含めたいと思います$vars$title$desc

4

2 に答える 2

0

それを理解しました..きれいではありませんが、それは私が望むことをします。

private function Handle($Function, $Values) {
        $Method = new ReflectionMethod($this, $Function);
        $Result = array();
        $Inc = 0;

        foreach($Method->getParameters() as $Args) {
            $Result[$Args->getName()] = $this->DB->real_escape_string($Values[$Inc]);
            $Inc++;
        }

        return $Result;
}

function Test($a, $b, $c) {
    $Vars = $this->Handle(__FUNCTION__, func_get_args());
    print_r($Vars);
}

print_r(Test(1, 2, 3));

Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)

これを行う別の方法がありましたが、などを使用して配列にアクセスする必要があり$Vars[0], $Vars[1]、を使用できるように作成したいと思いました$Vars['something'], $Vars['something_else']

于 2012-11-12T23:37:33.077 に答える
0

関数には引数がないため、で取得することはできませんfunc_get_args

バックトレースを調べて、パーツを抽出することで取得できますargs

于 2012-11-12T23:09:24.057 に答える