Я работаю с некоторым существующим кодом, в частности с плагином загрузки файлов JQuery. Существует один большой класс, и внутри него есть некоторые функции, которые я пытаюсь настроить. Проблема в том, что есть несколько строк кода, которые не имеют для меня никакого смысла.PHP Array Функция внутри класса Confusion
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 захватывает массив из каталога.
Его обратный вызов, который не имеет для меня никакого смысла. Я посмотрел на синтаксис функции array() в документации php, и он ничего не сказал о принятии двух аргументов, подобных этому. очевидно, вторая - это функция, которая находится в кавычках? Я понимаю, что делает код, а не как его делать.
Это некоторые недокументированные функции?
Это ссылка обратного вызова метода объекта. Вместо просто функции вы должны передать ссылку на объект '$ this' и имя функции в виде кортежа (массив из 2 частей). Тот факт, что это внутри класса, должен быть раскрыт в вопросе, хотя это очевидно из использования модификаторов '$ this' и' protected' для функций (методов). – Orbling
Извините, что отнесен к классу. Будет добавлено, что –