1

私はいくつかの既存のコード、特に JQuery File Upload Plugin を使用しています。1 つの大きなクラスがあり、その中にカスタマイズしようとしている関数がいくつかあります。問題は、意味をなさないコード行が数行あることです。

protected function get_file_object($file_name) {
    //whole bunch of code is here that generates an object file file size
    //and other information related to the image that was in the array.
    //removed the code to be concise, just know it returns an object.
        return $file;
}


protected function get_file_objects() {
        return array_values(
        array_filter(
        array_map(
            array($this, 'get_file_object'),
            scandir($this->options['upload_dir'])
        )));
}

さて、私が理解していないのは、array_map 内で何が起こっているかです。配列マップがコールバックを受け取り、次に配列を引数として受け取ることは知っています。scandir は、ディレクトリから配列を取得します。

私には意味のないコールバックです。PHP ドキュメントで array() 関数の構文を調べましたが、このような 2 つの引数を取ることについては何も書かれていませんでした。明らかに2番目のものは関数です。それは引用符で囲まれていますか? コードがどのように実行されているかではなく、コードが何を実行しているかを理解しています。

これは文書化されていない機能ですか?

4

1 に答える 1

4

の最初の引数はarray_map呼び出し可能なもので、最初の要素がインスタンス (またはメソッドが静的な場合はクラス名) を表し、2 番目の要素がメソッド名を表す配列です。そのarray($this, 'get_file_object')ためget_file_object、現在のインスタンス ($thisは現在のインスタンス) を参照しています。

于 2013-06-19T14:05:31.427 に答える