array_map PHPのスコープを設定する
質問
皆さん、私は再帰的なメソッドを書くために時々 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) ...
所属していません StackOverflow