2014-02-19 64 views
0

你好,我有以下方法。我想使用無名函數並在方法返回之前更改一些數據,而不是創建一個單獨的函數來本地化來自數據庫查詢的結果。我還希望該方法從無名函數返回過濾的數據。我在下面的代碼中做錯了什麼?php類的方法返回無名函數的值

public function getStats($request){ 

    // some custom input filtering 

    $params = array('uid' => $this->uid); 
    $reply = $db->get($query,$params); 

    return function() use (&$reply){ 

     //localization of some strings 

     return $reply; 
    }; 
} 

回答

1

不是返回匿名函數返回的值,而是返回函數本身。試試這個:

public function getStats($request){ 

    // some custom input filtering 

    $params = array('uid' => $this->uid); 
    $reply = $db->get($query,$params); 

    $myfunction = function() use ($reply){ 

     //localization of some strings 

     return $reply; 
    }; 

    return $myfunction(); 
} 

而且,沒有必要按引用傳遞$reply

0

在PHP中,無名函數被稱爲匿名函數或閉包。下面是一個例子:

<?php 
$greet = function($name) 
{ 
    printf("Hello %s\r\n", $name); 
}; 

$greet('World'); 
$greet('PHP'); 
?> 

有關詳細信息see docs