|
 |
mixed говорит о том, что параметр может принимать
множество (но не обязательно все) типов.
gettype(), например, принимает все типы PHP, тогда
как str_replace() принимает строки и массивы.
number говорит о том, что параметр может быть либо
integer, либо float.
Некоторые функции, такие как call_user_func()
или usort() принимают в качестве параметра
определенные пользователем callback-функции. Callback-функции могут
быть не только простыми функциями, но также методами объектов,
включая статические методы классов.
PHP-функция передается просто как строка ее имени. Вы можете передать
любую встроенную или определенную пользователем функцию за
исключением
array(),
echo(),
empty(),
eval(),
exit(),
isset(),
list(),
print() и
unset().
Метод созданного объекта передается как массив, содержащий объект в
элементе с индексом 0 и имя метода в элементе с индексом 1.
Методы статических классов также могут быть переданы без создания
экземпляра объекта передачей имени класса вместо имени объекта в
элементе с индексом 0.
Пример 11-11.
Примеры callback-функций
<?php
function my_callback_function() {
echo 'hello world!';
}
call_user_func('my_callback_function');
class MyClass {
function myCallbackMethod() {
echo 'Hello World!';
}
}
call_user_func(array('MyClass', 'myCallbackMethod'));
$obj = new MyClass();
call_user_func(array(&$obj, 'myCallbackMethod'));
?>
|
|
Псевдо-типы, используемые в этой документации
mr dot lilov at gmail dot com
11-Aug-2005 06:17
This's a useful example about callback, Look at the session_set_save_handler function.
From: http://www.zend.com/zend/spotlight/code-gallery-wade8.php
<?php
$ses_class = new session();
session_set_save_handler (array(&$ses_class, '_open'),
array(&$ses_class, '_close'),
array(&$ses_class, '_read'),
array(&$ses_class, '_write'),
array(&$ses_class, '_destroy'),
array(&$ses_class, '_gc'));
session_start();
class session
{
var $ses_table = "sessions";
var $db_con = "Y";
var $db_host = "localhost";
var $db_user = "username";
var $db_pass = "password";
var $db_dbase = "dbname";
function db_connect() {
............
}
function _open($path, $name) {
.............
}
function _close() {
..............
}
function _read($ses_id) {
.................
}
function _write($ses_id, $data) {
...........
}
function _gc($life) {
............
}
}
?>
strauchdieb at gmx dot de
03-Aug-2005 03:13
Don't forget the reference operator (&) when using an object method as a callback! If you forget the '&', $this will probably point to an other object than the one you intended.
| |