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.
Ψευδο-τύποι που χρησιμοποιήθηκαν σ'αυτό το documentation
mixed
mixed δείχνει ότι μια παράμετρος μπορεί να δεχθεί πολλαπλούς (αλλά όχι απαραίτητα όλους) τύπους.
Η gettype() για παράδειγμα θα δεχθεί όλους τους τύπους της PHP, ενώ η str_replace() θα δεχθεί μόνο strings και arrays.
callback
Μειρκές συναρτήσεις όπως η call_user_function() ή η usort() δέχονται callback συναρτήσεις οριζόμενες από το χρήστη ως παράμετροι. Οι callback συναρτήσεις δεν μπορούν να είναι απλές συναρτήσεις αλλά επίσης object methods που περιέχουν static class methods.
Μια συνάρτηση σε PHP καλείται απλά με το όνομα της ως string. Μπορείτε να περάσετε οποιαδήποτε builtin ή οριζόμενη από το χρήστη συνάρτηση χρησιμοποιώντας exception από array(), echo(), empty(), eval(), exit(), isset(), list(), print() και unset().
Μια μέθοδος ενός αντικειμένου που έχει κάποιο στιγμιότυπο περνιέται ως array που περιέχει ένα object ως στοιχείο με index 0 και ένα όνομα μεθόδου ως στοιχείο με index 1.
Οι Static class methods μπορούν επίσης να περαστούν χωρίς να δημιουργήσουμε στιγμιότυπο ενός object αυτής της class περνώντας το όνομα της κλάσης αντί για ένα object όπως το element με index 0.
Example#1 Παραδείγματα για Callback συναρτήσεις
<?php
// simple callback example
function my_callback_function() {
echo 'hello world!';
}
call_user_func('my_callback_function');
// method callback examples
class MyClass {
function myCallbackMethod() {
echo 'Hello World!';
}
}
// static class method call without instantiating an object
call_user_func(array('MyClass', 'myCallbackMethod'));
// object method call
$obj = new MyClass();
call_user_func(array(&$obj, 'myCallbackMethod'));
?>
Ψευδο-τύποι που χρησιμοποιήθηκαν σ'αυτό το documentation
23-May-2007 10:44
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');
?>
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
