Подтвердить что ты не робот

Передача метода объекта array_map()

    class theClass{
         function doSomeWork($var){
            return ($var + 2);
         }

         public $func = "doSomeWork";

         function theFunc($min, $max){
            return (array_map(WHAT_TO_WRITE_HERE, range($min, $max)));
         }
    }

$theClass = new theClass;
print_r(call_user_func_array(array($theClass, "theFunc"), array(1, 5)));
exit;

Может ли кто-нибудь сказать, что я могу написать в WHAT_TO_WRITE_HERE, так что функция doSomeWork получает проход как первый параметр array_map. и код работает правильно.

И выведите put как

Array
(
    [0] => 3
    [1] => 4
    [2] => 5
    [3] => 6
    [4] => 7
)
4b9b3361

Ответ 1

Чтобы использовать методы объекта с помощью array_map(), передайте массив, содержащий экземпляр объекта и имя метода. Для области с одинаковым объектом используйте $this как обычно. Поскольку имя вашего метода определено в свойстве public $func, вы можете пройти $this->func. Это относится к большинству функций, которые принимают callback в качестве аргумента.

В качестве побочной заметки круглые скобки вне array_map() не нужны.

return array_map(array($this, $this->func), range($min, $max));

Ответ 2

В следующем коде представлен массив писем из массива $users, который содержит экземпляры класса с методом getEmail:

    if(count($users) < 1) {
        return $users; // empty array
    }
    return array_map(array($users[0], "getEmail"), $users);