1

6 つのドロップダウン要素を生成する次のコードがあります。

   for($i = 0; $i < 6; $i++)
    {
        $RelatedProductsHtmlList .= $this->getRelatedProductHtmlDropdown($Products[$i], $allAvailibleProducts, $i);
    }

このコードでは、引数$Products[$i]が渡されます。これは、生成されるドロップダウン リストのデフォルトで選択された値を設定するための情報を持つ ORM オブジェクトです。$Products常に配列ではないという問題があります。値が 1 つしかない場合もありますが、その場合は配列ではなく、単一の ORM オブジェクトです。

何をするのが最もきれいですか?$Products要素が 1 つだけの配列に変換しますか? $Products配列の場合は常に変数全体を渡し、関数で決定しますか? または$Products、関数を呼び出す前に配列かどうかを判断し、それに応じて関数の引数を設定しますか?

4

2 に答える 2

1

メソッドを呼び出す前に修正するか、メソッド自体の内部で修正します。

例:

if(!is_array($products)) {
    $products = array($product));
}

私に尋ねられたら、このコードをメソッド自体の先頭に追加します。これにより、関数呼び出しが容易になり、冗長なコードが削減されます。

于 2013-06-02T19:19:26.000 に答える
0

配列と単一のオブジェクトを関数に渡すことを許可することをお勧めします。コードのさまざまな部分で複数のチェックを避けることができます。次の方法で実行できます。

/**
@param array | ProductClass $Products
...
*/
public function getRelatedProductHtmlDropdown($Products, $allAvailibleProducts, $i)
{
    if (!is_array($Products)) $Products = array($Products);
    ....
}
于 2013-06-02T19:20:49.480 に答える