2005年08月25日

PHP 的 callback 虛擬型態

PHP 提供了一種很有趣的虛擬型態 (Pseudo-type) : callback ,它其實是字串或陣列組成。主要用來處理一些有不容易寫死在程式裡的函式名稱。

它可以是以下寫法:

// 呼叫函式,相當於 functionName();
'functionName'

// 呼叫類別靜態方法,相當於 className::methodName();
array ('className', 'methodName');

 // 呼叫物件方法,相當於 $object->methodName();
array ($object, 'methodName');

例如:

<?php
$ary = array (
    'abc',
    'def',
    'ghi',
    array (
        '123',
        '456',
        '789',
    ),
);

function doSomething(& $v)
{
    $v = 'f : ' . $v;
}
class TestClass
{
    public function doSomething(& $v)
    {
        $v = 'c : ' . $v;
    }
}

$test = new TestClass();

var_dump(call_user_func('doSomething', 123));

var_dump(call_user_func(array ('TestClass', 'doSomething'), 123));

var_dump(call_user_func(array ($test, 'doSomething'), 123));

array_walk_recursive($ary, 'doSomething');
var_dump($ary);

array_walk_recursive($ary, array ('TestClass', 'doSomething'));
var_dump($ary);

array_walk_recursive($ary, array ($test, 'doSomething'));
var_dump($ary);

?>


Posted by jaceju at 樂多Roodo! │13:25 │ PHP
樂多分類:網路/3C 共同主題:PHP 程式設計 工具:加入樂多書籤編輯本文
Ads by Roodo! 
引用列表:
石頭成老大說他要為他的 mix-in 實作 part 2 ,我也想到了一些好玩的東西。記得很久之前我寫過一篇「
我也來實作 PHP mix-in 的概念 - Part 2【網站製作學習誌】 at 2007年03月14日 22:43