質問

皆さん、私は再帰的なメソッドを書くために時々 array_map を使います。例えば

function stripSlashesRecursive( $value ){

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

質問:

この関数を静的クラスに置きたいとします。Sanitize::stripSlashesRecursive(); のようなクラスの静的メソッドのスコープに array_map を戻すにはどうすればよいでしょうか。これは簡単だと思いますが、php.netも調べたので理解できませんでした。

役に立ちましたか?

解決

array_map()usort()などの機能のためのコールバックとしてクラスメソッドを使用する場合は、次の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 );

他のヒント

array_map かかります 折り返し電話 最初のパラメータとして。

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

array('classname', 'methodname')


つまり、あなたの特定のケースでは、次のように使用します。

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


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

array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top