2017-05-25 44 views
-1

我有一些類大量的代碼,當我必須預先聲明數組$keys = [];如何製作更美觀的代碼?

public function convertIdStringToMongoID($array_id = array()) 
{ 

    $keys = []; 

    foreach ($array_id as $k => $id) { 

     $keys[] = new \MongoId($id); 
    } 

    return $keys; 
} 

它看起來現在好了,如何讓這更美呢?

+7

不要聽任何人,你的代碼很美) –

+1

這應該做到這一點 – RiggsFolly

+0

你不需要'$ k =>'; 'foreach($ array_id as $ id)'就夠了(在發佈的代碼中沒有使用'$ k')。 – axiac

回答

3

根據this docs可以嘗試映射你的陣列,像這樣:

public function convertIdStringToMongoID($array_id = array()) 
{ 
    $func = function($id) { 
     return new \MongoId($id); 
    }; 
    return array_map($func, $array_id); 
} 

或者根據this example,是這樣的:

public function convertIdStringToMongoID($array_id = array()) 
{ 
    return array_map(array($this, 'to_id'), $array_id); 
} 

private function to_id($id) { 
    return new \MongoId($id); 
} 

兩個示例都使用函數式編程方法。

+0

來檢查它,或者甚至爲此使用一些外部函數。 –

-1

使用駝峯變量,移除不需要的空行,刪除鍵$ k作爲不使用它,如果你使用數組短版[],然後在任何地方使用它:

public function convertIdStringToMongoID($arrayId = []) 
{ 
    $keys = []; 

    foreach ($arrayId => $id) { 
     $keys[] = new \MongoId($id); 
    } 

    return $keys; 
} 
+0

咦?這裏有什麼特別的? –

+0

它被稱爲psr標準談論camelCase和其他提示它只是爲了更乾淨的代碼 – Eimsas

1

您發佈的代碼是乾淨的並且快速。您可以使用array_map()一個更緊湊的方式寫和anonymous function

public function convertIdStringToMongoID(array $array_id = array()) 
{ 
    return array_map(function ($id) { return new \MongoId($id); }, $array_id); 
} 

有些人可能會認爲這是更漂亮,別人會說這是稍微難以閱讀和理解這種方式。
兩者都會同意這個版本的執行時間比你的版本稍長。然而,差異並不顯着,還有其他地方可以搜索優化(訪問磁盤和外部資源,數據庫查詢,Mongo等)