Псевдо-типы и переменные, используемые в этой документации
mixed
mixed говорит о том, что параметр может принимать много
(но необязательно все) типов.
gettype() например, принимает все типы PHP, тогда как
str_replace() принимает только string и
array.
number
number говорит о том, что параметр может быть либо
integer, либо float.
callback
Некоторые функции, такие как call_user_func() или
usort() принимают в качестве параметра определенные пользователем
callback-функции. Callback-функции могут быть не только простыми функциями, но также и
методами объектов, включая статические методы классов.
PHP-функция передается просто как строка ее имени. Можно использовать любую
встроенную или пользовательскую функцию, кроме языковых конструкций, таких как:
array(), echo(),
empty(), eval(),
exit(), isset(),
list(), print() и
unset().
Метод созданного объекта передается как массив, содержащий сам объект в элементе
с индексом 0 и имя метода в элементе с индексом 1.
Статические методы классов также могут быть переданы без создания экземпляра объекта
данного класса путем передачи имени класса вместо имени объекта в элементе с индексом 0.
Кроме общих пользовательских функций, create_function()
также может быть использована для создания анонимной callback-функции.
Начиная с версии PHP 5.3.0 стала возможным также передача
замыканий в callback-параметр.
Пример #1
Примеры callback-функций
// пример callback-функции function my_callback_function() { echo 'hello world!'; }
// пример callback-метода class MyClass { static function myCallbackMethod() { echo 'Hello World!'; } }
// Вариант 1: простой вызов callback call_user_func('my_callback_function');
// Вариант 2: вызов статического метода класса call_user_func(array('MyClass', 'myCallbackMethod'));
// Вариант 3: вызов метода объекта $obj = new MyClass(); call_user_func(array($obj, 'myCallbackMethod'));
// Вариант 4: вызов статического метода класса (с версии PHP 5.2.3) call_user_func('MyClass::myCallbackMethod');
// Вариант 5: вызов относительного статического метода класса (с версии PHP 5.3.0) class A { public static function who() { echo "A\n"; } }
class B extends A { public static function who() { echo "B\n"; } }
call_user_func(array('B', 'parent::who')); // A ?>
Пример #2
Пример callback-вызова с использованием замыканий
// наше замыкание $double = function($a) { return $a * 2; };
// это наш диапазон чисел $numbers = range(1, 5);
// Используем здесь замыкание в качестве callback-функции // для удвоения размера каждого элемента в диапазоне $new_numbers = array_map($double, $numbers);
print implode(' ', $new_numbers); ?>
Результат выполнения данного примера:
Замечание:
В PHP 4 было необходимо использовать ссылку при создании callback-функции для того,
чтобы она указывала на реальный объект, а не на его копию.
За подробностями обращайтесь к разделу
Объяснение ссылок.
Замечание: Callback-функции,
зарегистрированные такими функциями как call_user_func() и call_user_func_array(),
не будут вызваны при наличии не пойманного исключения, брошенного в предыдущей callback-функции.
void
void в качестве типа результата означает, что возвращенное
значение бесполезно. void в списке параметров означает, что
функция не принимает параметров.
...
$... в прототипах функции означает
and so on (и так далее). Это имя переменной используется когда
функция может принимать бесконечное количество параметров.
|