我有以下代码,它生成六个下拉元素:
for($i = 0; $i < 6; $i++)
{
$RelatedProductsHtmlList .= $this->getRelatedProductHtmlDropdown($Products[$i], $allAvailibleProducts, $i);
}
在此代码中,传递参数$Products[$i]
,它是一个ORM对象,其中包含用于设置生成的下拉列表的默认选定值的信息。我有一个问题,$Products
并不总是一个数组。有时只包含一个值,在这种情况下,它不是一个数组,而是一个ORM对象。
最干净的事是什么?将$Products
转换为只包含一个元素的数组?如果它是一个数组,总是传递函数中确定的整个$Products
变量吗?或者在调用函数之前确定$Products
是否为数组并相应地设置函数参数?
答案 0 :(得分:1)
您有两种选择:在调用方法之前或在方法本身内部修复它。
示例:
if(!is_array($products)) {
$products = array($product));
}
如果您问我,我会将此代码添加到方法本身的顶部,因为这样可以简化函数调用并减少冗余代码。
答案 1 :(得分:0)
我建议允许将数组和单个对象传递给函数。您将避免在代码的不同部分进行多次检查。你可以这样做:
/**
@param array | ProductClass $Products
...
*/
public function getRelatedProductHtmlDropdown($Products, $allAvailibleProducts, $i)
{
if (!is_array($Products)) $Products = array($Products);
....
}