3

みなさん、私は時々 array_map を使って再帰メソッドを書いています。例えば

function stripSlashesRecursive( $value ){

    $value = is_array($value) ?
        array_map( 'stripSlashesRecursive', $value) :
    stripslashes( $value );
    return $value;
}

質問:

この関数を静的クラスに入れたいとします。どのように array_map を使用して、Sanitize::stripSlashesRecursive(); のようなクラスの静的メソッドのスコープに戻すことができますか? これは簡単だと確信していますが、私はそれを理解することができず、php.netも見ました。

4

3 に答える 3

15

array_map()や などの関数のコールバックとしてクラス メソッドを使用する場合usort()、コールバックを 2 値配列として送信する必要があります。2 番目の値は、常に文字列としてのメソッドの名前です。最初の値はコンテキスト (クラス名またはオブジェクト) です

// Static outside of class context
array_map( array( 'ClassName', 'methodName' ), $array );

// Static inside class context
array_map( array( __CLASS__, 'methodName' ), $array );

// Non-static outside of object context
array_map( array( $object, 'methodName' ), $array );

// Non-static inside of object context
array_map( array( $this, 'methodName' ), $array );
于 2010-02-24T21:06:58.733 に答える
1

array_map最初のパラメーターとしてコールバックを受け取ります。

また、静的メソッドへのコールバックは次のように記述します。

array('classname', 'methodname')


つまり、特定のケースでは、次を使用します。

array_map(array('stripSlashesRecursive', ''), $value);


コールバックの 詳細については、PHP マニュアルの次のセクションを参照してください:このドキュメントで使用される疑似型と変数 - コールバック

于 2010-02-24T21:04:09.130 に答える
0
array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...
于 2010-02-24T21:05:16.133 に答える