PHP разработки


Как использовать в качестве callback функции метод объекта?

Размещена 19 августа, 2008 года


Многие функции 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);


© tigir.com
SAPE все усложнил?

MainLink - простая и прибыльная продажа ссылок!

Последние поступления:

Стишки пирожки про Олега⁠⁠

Размещена 20 июня 2024 года

Олег купил презервативы
Проник в семидесятый год
И подарил их папе с мамой
Такой нелепый суицид

читать далее…

Размещена 10 августа 2020 года

Я по ТВ видел, что через 10 лет мы будем жить лучше, чем в Германии...
Я не понял, что это они с Германией сделать хотят?!

читать далее…

ТехЗадание на Землю

Размещена 14 марта 2018 года

Пpоект Genesis (из коpпоpативной пеpеписки)

читать далее…

Шпаргалка по работе с Vim

Размещена 05 декабря 2017 года

Vim довольно мощный редактор, но работа с ним не всегда наглядна.
Например если нужно отредактировать какой-то файл например при помощи crontab, без знания специфики работы с viv никак.

читать далее…

Ошибка: Error: Cannot find a valid baseurl for repo

Размещена 13 сентабря 2017 года

Если возникает ошибка на centos 5 вида
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

читать далее…