簡體   English   中英

類中的php回調函數

[英]php callback function in class

由於某些原因,我們的托管公司使用PHP 5.2,甚至沒有預先安裝mysqli和PDO。

我別無選擇,只能重寫代碼的某些部分,使其兼容5.2。

所以,這是我的問題:

在PHP 5.2中不支持匿名函數,所以我做了以下測試以確保我正確地更改代碼:

class foo{

    public function toString(){
        $arr = array("a", "b");
        $arr2 = array("c", "d");
        print_r(array_map('mapKeyValue', $arr, $arr2));
    }

    private function mapKeyValue($v, $k){
        return $k."='".$v."'";
    }
}

$foo = new foo();
echo $foo->toString();

但上面會給我:

Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in ....
PHP Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in ....

什么是正確的方法:

array_map('mapKeyValue', $arr, $arr2);

在課堂上?

PS:改變托管公司是否足夠合理,因為他們使用的是PHP 5.2?(我得到了約7個月的合同)

使用$this和一個數組作為回調:

array_map( array( $this, 'mapKeyValue'), $arr, $arr2);

而且,可以肯定的是,這是通過PHP 5.2.17進行測試並確認可行的

嘗試使用:

print_r(array_map(array($this, "mapKeyValue") , $arr, $arr2));

您需要使用$ this調用該函數。

array_map(array($this, 'mapKeyValue'), $arr, $arr2);

確保您的回調方法是公開的

public function mapKeyValue($v, $k){
    return $k."='".$v."'";
}

print_r(array_map(array($this, "mapKeyValue") , $arr, $arr2));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM