PHP разработки
Как использовать в качестве callback функции метод объекта?
Многие функции PHP (array_map, array_filter, array_reduce, array_walk ...) принимают в качестве параметра функцию обратного вызова (callback-функцию). Чтобы передать встроенную или определенную пользователем функцию как callback, нужно просто передать её имя.
function my_func() { ... } $a = array_map('my_func', $arr);
Но в качестве callback-функций могут быть использованы не только простые функции, а также методы объектов, и статические методы классов. Чтобы передать в качестве callback-функции метод объекта (именно объекта, который созданн посредством оператора new), нужно передать массив вида:
array(&$obj, "имя метода").
Оператор ссылки (&) при использовании метода объекта в качестве callback-функций обязателен только в PHP4, в PHP5 оператор ссылки (&)не нужен.
class MyClass { function my_func() { ... } } $obj = new MyClass(); $a = array_map(array(&$obj, 'my_func'), $arr);
В случае статического метода класса, вместо объекта используется имя класса: array("имя класса", "имя метода").
$a = array_map(array('MyClass', 'my_func'), $arr);