PHP:callback函數的使用

PHP 中有某些函數允許使用使用者定義的函數來作為參數,例如:call_user_func()、usort()。

如果想呼叫的是某物件的方法時,其參數則必須是一個包含兩個元素的陣列,index 為 0 的元素為欲呼叫其方法的物件變數,index 為 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
?>

留言

這個網誌中的熱門文章

PHP:變數範圍

PHP常用函數:陣列(array)