1

我有以下代码,它生成六个下拉元素:

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

在此代码中,$Products[$i]传递了参数,该参数是一个 ORM 对象,其中包含用于设置生成的下拉列表的默认选定值的信息。我遇到的问题$Products并不总是数组。有时只包含一个值,在这种情况下它不是数组,而是单个 ORM 对象。

做什么最干净?转换$Products为只有一个元素的数组?$Products如果它是一个数组,总是在函数中传递整个变量en确定?或者在调用函数之前确定是否$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 回答