有些諸如 call_user_function() 或 usort() 的函數接受會員自訂的函數作為一個參數。Callback 函數不僅可以是一個簡單的函數,它還可以是一個對象的方法,內含靜態類的方法。
一個 PHP 函數用函數名字串來傳遞。可以傳遞任何內建的或是會員自訂的函數,除了
array(),echo(),empty(),eval(),exit(),isset(),list(),print()
和 unset()。
一個對象的方法以陣列的形式來傳遞,陣列的下標 0 指明物件名,下標 1 指明方法名。
對於沒有案例化為對象的靜態類,要傳遞其方法,將陣列 0 下標指明的對象名換成該類的名稱即可。
例子 11-13. Callback 函數案例
<?php // An example callback function function my_callback_function() { echo 'hello world!'; }
// An example callback method class MyClass { 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')); ?>
|
|