オープンソースのoauth-phpライブラリを見つけたコードを理解しようとしています。関連するコードスニペットは次のとおりです。
protected function sql_printf ( $args )
{
$sql = array_shift($args);
if (count($args) == 1 && is_array($args[0]))
{
$args = $args[0];
}
$args = array_map(array($this, 'sql_escape_string'), $args);
return vsprintf($sql, $args);
}
ここで、$ argsは、フォーマットされた印刷操作で使用することを目的とした変数を含む引数の配列です。array_mapのドキュメントを確認しました。
http://php.net/manual/en/function.array-map.php
ユーザーのコメントと、array_map()の呼び出しの最初のパラメーターが配列自体であるユースケースは見当たりませんでした。私が見たすべてのユースケースで、最初のパラメーターはNULLまたは(コールバック)関数のいずれかでした。コードが$args配列を受け取り、$ this-> sql_escape_string()によってサニタイズされた引数を使用して新しい配列を構築することは私にはかなり明白に思えます。
しかし、「array($ this、'sql_escape_string')」というステートメントは、単に「$ this-> sql_escape_string」を期待していたので、私をスローしますか、それとも有効な構文ではありませんか?もしそうなら、$ thisと'sql_escape_string'を配列でラップすると、array_map()が使用する有効なコールバック関数がどのように作成されますか?
-ロシュラー