The mixed pseudotype is explained as meaning "multiple but not necessarily all" types, and the example of str_replace(mixed, mixed, mixed) is given where "mixed" means "string or array".
Keep in mind that this refers to the types of the function's arguments _after_ any type juggling.
Псевдо-типове и променливи, използвани в настоящата документация
mixed (смесен)
mixed обозначава, че даден параметър може да приема множество (но не непременно всички) типове.
gettype() например приема всички типове в PHP, докато str_replace() приема само низове и масиви.
number (число)
number обозначава, че параметърът може да бъде или цяло (integer) или плаващо (float) число.
callback (обратно извикване)
Някои функции като call_user_func() или usort() приемат като параметър потребителски-дефинирани функции за обратно извикване. Последните могат да бъдат не само прости функции, но също и методи на обекти, включително и статични такива.
Функцията в PHP просто се предава с името си под формата на низ. Можете да предавате коя да е вградена или потребителски-дефинирана функция с изключение на array(), echo(), empty(), eval(), exit(), isset(), list(), print() и unset().
Метод на инстанцииран обект се предава като масив, съдържащ обекта като елемент с индекс 0 и името на метода като елемент с индекс 1.
Статичните методи на клас също могат да бъдат предавани, без да е необходимо да се инстанциира обект от този клас, чрез предаването на името на класа, вместо обекта, за елемента с индекс 0.
Освен обикновените потребителски-дефинирани функции, create_function() може да бъде изполозвана, за да се създаде анонимна функция за обратно извикване.
Example #1 Примери за функции с обратно извикване
<?php
// Примерна функция за обратно извикване
function my_callback_function() {
echo 'hello world!';
}
// Примерен метод за обратно извикване
class MyClass {
static function myCallbackMethod() {
echo 'Hello World!';
}
}
// Тип 1: Просто извикване
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');
?>
Забележка: В PHP4, ще трябва да използвате референция, за да създадете обратно извикване, което да сочи към самия обект, а не към копие от него. За повече информация вижте Референции.
void
void във връщания тип означава, че връщаната стойност е безполезна. void в списъка с параметри означава, че функцията не приема никакви параметри.
...
$... в прототипа на функция означава и така нататък. Това име на променлива се използва, когато функцията може да приеме неограничен брой аргументи.
Псевдо-типове и променливи, използвани в настоящата документация
24-May-2007 07:44
08-Feb-2007 11:44
Parent methods for callbacks should be called 'parent::method', so if you wish to call a non-static parent method via a callback, you should use a callback of
<?
// always works
$callback = array($this, 'parent::method')
// works but gives an error in PHP5 with E_STRICT if the parent method is not static
$callback array('parent', 'method');
?>
01-Feb-2007 11:15
To recap mr dot lilov at gmail dot com's comment: If you want to pass a function as an argument to another function, for example "array_map", do this:
regular functions:
<?
array_map(intval, $array)
?>
static functions in a class:
<?
array_map(array('MyClass', 'MyFunction'), $array)
?>
functions from an object:
<?
array_map(array($this, 'MyFunction'), $array)
?>
I hope this clarifies things a little bit
