2013-06-19 113 views
1

我正在使用一些現有的代碼,特別是JQuery文件上傳插件。有一個大類,其中有一些功能,我試圖自定義。問題是有幾行代碼對我來說毫無意義。類內混亂的PHP數組函數

protected function get_file_object($file_name) { 
    //whole bunch of code is here that generates an object file file size 
    //and other information related to the image that was in the array. 
    //removed the code to be concise, just know it returns an object. 
     return $file; 
} 


protected function get_file_objects() { 
     return array_values(
     array_filter(
     array_map(
      array($this, 'get_file_object'), 
      scandir($this->options['upload_dir']) 
     ))); 
} 

好吧,所以我不明白的是在array_map裏面發生了什麼。我知道數組映射需要一個回調,然後是一個數組作爲參數。 scandir從目錄中獲取數組。

它對我來說毫無意義的回調。我在php文檔中查看了array()函數的語法,並沒有提及任何有關這樣的兩個參數的說法。顯然第二個是一個函數,這是在引號?我明白代碼的作用,而不是它如何做。

這是一些未公開的功能?

+0

這是一個對象方法回調引用。除了函數之外,還必須將對象引用'$ this'和函數名稱作爲元組(2部分數組)傳遞。事實上,這是在一個類中,應該在問題中公開,儘管在函數(方法)中使用'$ this'和'protected'修飾符是顯而易見的。 – Orbling

+0

對不起,在班上。將添加 –

回答

4

array_map的第一個參數是callable其中一個可調用的事物是第一個元素表示實例(或類名(如果該方法是靜態的)和第二個methodname的數組。所以array($this, 'get_file_object')是指當前實例的get_file_object$this是當前實例)。

+1

基本上,'數組($ this,'get_file_object')'是'$ this-> get_file_object'的「回調」語法:-) –

+0

@RocketHazmat是的,這有點容易:) –