Псевдо-типы и переменные, используемые в этой документации

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-функций

<?php 

// пример 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 {
    public static function 
who() {
        echo 
"A\n";
    }
}

class 
extends {
    public static function 
who() {
        echo 
"B\n";
    }
}

call_user_func(array('B''parent::who')); // A
?>

Пример #2 Пример callback-вызова с использованием замыканий

<?php
// наше замыкание
$double = function($a) {
    return 
$a 2;
};

// это наш диапазон чисел
$numbers range(15);

// Используем здесь замыкание в качестве callback-функции
// для удвоения размера каждого элемента в диапазоне
$new_numbers array_map($double$numbers);

print 
implode(' '$new_numbers);
?>

Результат выполнения данного примера:

2 4 6 8 10

Замечание: В PHP 4 было необходимо использовать ссылку при создании callback-функции для того, чтобы она указывала на реальный объект, а не на его копию. За подробностями обращайтесь к разделу Объяснение ссылок.

Замечание:

Callback-функции, зарегистрированные такими функциями как call_user_func() и call_user_func_array(), не будут вызваны при наличии не пойманного исключения, брошенного в предыдущей callback-функции.

void

void в качестве типа результата означает, что возвращенное значение бесполезно. void в списке параметров означает, что функция не принимает параметров.

...

$... в прототипах функции означает and so on (и так далее). Это имя переменной используется когда функция может принимать бесконечное количество параметров.


Участник рейтинга Тэглайн 2010