[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: callback-функций
Jek
В чём отличение обычных функций ( пользовательских) от callback-функций?
Прочиnал мануал и чё-то не вкурил. http://docs.php.net/manual/ru/language.pse....types.callback.



Спустя 4 минуты, 4 секунды (20.04.2011 - 07:40) uWeb написал(а):
Callback-функция вызывается после каких-либо действий.

Спустя 22 минуты, 22 секунды (20.04.2011 - 08:03) Jek написал(а):
uWebпопробуй нормально объяснить, если сможешь. я только учу это язык.)))

Спустя 12 минут, 34 секунды (20.04.2011 - 08:15) Rand написал(а):
В вики написано более понятно: http://ru.wikipedia.org/wiki/Callback_(%D0...BD%D0%B8%D0%B5)

Спустя 2 минуты, 14 секунд (20.04.2011 - 08:18) Jek написал(а):
В вики написано более точно и правильно, но, не очень понятно))))))

Спустя 45 минут, 53 секунды (20.04.2011 - 09:03) Rand написал(а):
В узком смысле, это обычная функция, имя которой передано другой функции как параметр. Например, нам нужно написать очень много функций по обработке элементов массива. В каждой из этих функций мы перебираем элементы массива в цикле - это общие действие для всех функций. Но то, что мы делаем внутри цикла, у всех функций разное. У нас есть два варианта - либо писать цикл в каждой из множества функций, либо создать одну абстрактную функцию, в теле которой будет цикл перебора элементов массива, а внутри цикла будет вызываться callback-функция. Callback функции во втором варианте будут обрабатывать только отдельные элементы, а не весь массив, что сократит количество кода. Для данной задачи разработчики PHP уже написали такую функцию за нас, называется она array_map, но есть множество других задач, которые могут быть решены по тому же принципу.

Спустя 1 час, 22 минуты, 25 секунд (20.04.2011 - 10:26) Jek написал(а):
Rand, спасибо за пояснение

callback-функции может считаться, только тогда, когда её вызывают?

да обычная функция, но почему она callback?
<?php 

// пример callback-функции
function my_callback_function() {
echo 'hello world!';
}


// Вариант 1: простой вызов callback
call_user_func('my_callback_function');


?>

Спустя 1 час, 6 минут, 28 секунд (20.04.2011 - 11:32) Rand написал(а):
Цитата
callback-функции может считаться, только тогда, когда её вызывают?

Можно сказать и так. my_callback_function это обычная функция, но как только она была передана в качестве параметра в call_user_func, она стала callback.

Спустя 7 минут, 21 секунда (20.04.2011 - 11:40) Jek написал(а):
Получается и это callback-функция?
<?php
function
square($num)
{
return $num * $num;
}
echo square(4); // выводит '16'.
?>

Спустя 9 минут, 39 секунд (20.04.2011 - 11:49) Rand написал(а):
В PHP callback это псевдотип, и говорить о том, что функция является callback можно только в контексте передаче её в качестве параметра. Во всех остальных случаях - это простая функция/метод.

P.S. Выше не callback, по скольку ты негде эту функцию в качестве параметра не передаешь, ты просто её вызываешь.

Спустя 8 минут, 31 секунда (20.04.2011 - 11:58) Jek написал(а):
Спасибо Rand, что не устали повторяться. Сейчас немного понял. Ещё бы примерчик хороший.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.