�� PHP 5.4 ����� callable ����ָ���ص����� callback�����ĵ�����ͬ������ʹ�� callback ������Ϣ��
һЩ������ call_user_func() �� usort() ���Խ����û��Զ���Ļص�������Ϊ�������ص�������ֹ�����Ǽ������������Ƕ���ķ�����������̬�����
PHP�ǽ�������string��ʽ���ݵġ� ����ʹ���κ����û��û��Զ��庯�������������Խṹ���磺array()��echo��empty()��eval()��exit()��isset()��list()��print �� unset()��
һ����ʵ������ object �ķ�������Ϊ array ���ݣ��±� 0 ������ object���±� 1 ������������ ��ͬһ��������Է��� protected �� private ������
��̬���Ҳ�ɲ���ʵ��������Ķ�������ݣ�ֻҪ���±� 0 �а������������Ƕ����� PHP 5.2.3 ��Ҳ���Դ��� 'ClassName::methodName'��
������ͨ���û��Զ��庯���⣬Ҳ�ɴ��� �������� ���ص�������
Example #1 �ص�����ʾ��
<?php
// An example callback function
function my_callback_function() {
echo 'hello world!';
}
// An example callback method
class MyClass {
static function myCallbackMethod() {
echo 'Hello World!';
}
}
// Type 1: Simple callback
call_user_func('my_callback_function');
// Type 2: Static class method call
call_user_func(array('MyClass', 'myCallbackMethod'));
// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));
// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');
// Type 5: Relative static class method call (As of PHP 5.3.0)
class A {
public static function who() {
echo "A\n";
}
}
class B extends A {
public static function who() {
echo "B\n";
}
}
call_user_func(array('B', 'parent::who')); // A
// Type 6: Objects implementing __invoke can be used as callables (since PHP 5.3)
class C {
public function __invoke($name) {
echo 'Hello ', $name, "\n";
}
}
$c = new C();
call_user_func($c, 'PHP!');
?>
Example #2 ʹ�� Closure ��ʾ��
<?php
// Our closure
$double = function($a) {
return $a * 2;
};
// This is our range of numbers
$numbers = range(1, 5);
// Use the closure as a callback here to
// double the size of each element in our
// range
$new_numbers = array_map($double, $numbers);
print implode(' ', $new_numbers);
?>
�������̻������
2 4 6 8 10
Note:
�ں�����ע���ж���ص�����ʱ(��ʹ�� call_user_func() �� call_user_func_array())������ǰһ���ص�����δ������쳣�����Ľ����ٱ����á�