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
?>

留言

這個網誌中的熱門文章

[Android] 設計以格狀為主的排版時,使用 GridView 或是 TableLayout 較好呢?

[Java] 何時該使用LinkedList? (與ArrayList的效率比較)

[Java] HashTable和HashMap的不同