Web студия "GrandView"
  Главная   Написать Контакты
   
   
О проекте
Руководство php
 

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

mixed

mixed говорит о том, что параметр может принимать множество (но не обязательно все) типов.

gettype(), например, принимает все типы PHP, тогда как str_replace() принимает строки и массивы.

number

number говорит о том, что параметр может быть либо integer, либо float.

callback

Некоторые функции, такие как call_user_func() или usort() принимают в качестве параметра определенные пользователем callback-функции. Callback-функции могут быть не только простыми функциями, но также методами объектов, включая статические методы классов.

PHP-функция передается просто как строка ее имени. Вы можете передать любую встроенную или определенную пользователем функцию за исключением array(), echo(), empty(), eval(), exit(), isset(), list(), print() и unset().

Метод созданного объекта передается как массив, содержащий объект в элементе с индексом 0 и имя метода в элементе с индексом 1.

Методы статических классов также могут быть переданы без создания экземпляра объекта передачей имени класса вместо имени объекта в элементе с индексом 0.

Пример 11-11. Примеры callback-функций

<?php

// простой пример callback
function my_callback_function() {
    echo
'hello world!';
}
call_user_func('my_callback_function');

// примеры callback-метода
class MyClass {
    function
myCallbackMethod() {
        echo
'Hello World!';
    }
}

// вызов метода статического класса без создания объекта
call_user_func(array('MyClass', 'myCallbackMethod'));

// вызов метода объекта
$obj = new MyClass();
call_user_func(array(&$obj, 'myCallbackMethod'));
?>



Манипуляции с типами> <NULL
Last updated: Sat, 27 Jan 2007
 
add a note add a note User Contributed Notes
Псевдо-типы, используемые в этой документации
Hayley Watson
23-May-2007 10:44
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.
levi at alliancesoftware dot com dot au
08-Feb-2007 02: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');
?>
Edward
01-Feb-2007 02: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
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

/* Create new object of class */
$ses_class = new session();

/* Change the save_handler to use the class functions */
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'));

/* Start the session */
session_start();

class
session
{
   
/* Define the mysql table you wish to use with
       this class, this table MUST exist. */
   
var $ses_table = "sessions";

   
/* Change to 'Y' if you want to connect to a db in
       the _open function */
   
var $db_con = "Y";

   
/* Configure the info to connect to MySQL, only required
       if $db_con is set to 'Y' */
   
var $db_host = "localhost";
    var
$db_user = "username";
    var
$db_pass = "password";
    var
$db_dbase = "dbname";

   
/* Create a connection to a database */
   
function db_connect() {
    ............
    }

   
/* Open session, if you have your own db connection
       code, put it in here! */
   
function _open($path, $name) {
    .............
    }

   
/* Close session */
   
function _close() {
    ..............
    }

   
/* Read session data from database */
   
function _read($ses_id) {
    .................
    }

   
/* Write new data to database */
   
function _write($ses_id, $data) {
    ...........
    }

   
/* Garbage collection, deletes old sessions */
   
function _gc($life) {
    ............
    }
}
?>

Манипуляции с типами> <NULL
Last updated: Sat, 27 Jan 2007
 
 
Новости
11 июля 2007
Сайт запущен
© 2007 info@grandviewstudio.com
Z058440144362 Z348613067571