Php 处理不同参数类型的最干净方法
我有以下代码,它生成六个下拉元素:Php 处理不同参数类型的最干净方法,php,coding-style,arguments,Php,Coding Style,Arguments,我有以下代码,它生成六个下拉元素: for($i = 0; $i < 6; $i++) { $RelatedProductsHtmlList .= $this->getRelatedProductHtmlDropdown($Products[$i], $allAvailibleProducts, $i); } ($i=0;$igetRelatedProductHtmlDropdown($Products[$i],$allavailablepro
for($i = 0; $i < 6; $i++)
{
$RelatedProductsHtmlList .= $this->getRelatedProductHtmlDropdown($Products[$i], $allAvailibleProducts, $i);
}
($i=0;$i<6;$i++)的
{
$RelatedProductsHtmlList.=$this->getRelatedProductHtmlDropdown($Products[$i],$allavailableproducts,$i);
}
在这段代码中,传递了参数$Products[$i]
,这是一个ORM对象,包含用于设置生成的下拉列表的默认选定值的信息。我的问题是,$Products
并不总是一个数组。有时只包含一个值,在这种情况下,它不是数组,而是单个ORM对象
最干净的事情是什么?是否将
$Products
转换为仅包含一个元素的数组?始终在函数中传递整个$Products
变量以确定它是否为数组?或者在调用函数之前确定$Products
是否为数组,并相应地设置函数参数?您有两个选项:在调用方法之前修复它,或者在方法本身内部修复它
例如:
if(!is_array($products)) {
$products = array($product));
}
如果你问我,我会将此代码添加到方法本身的顶部,因为这将简化函数调用并减少冗余代码。你有两个选择:在调用方法之前修复它或在方法本身内部修复它 例如:
if(!is_array($products)) {
$products = array($product));
}
如果您问我,我会将此代码添加到方法本身的顶部,因为这将简化函数调用并减少冗余代码。我建议允许将数组和单个对象传递到函数中。您将避免在代码的不同部分进行多次检查。您可以这样做:
/**
@param array | ProductClass $Products
...
*/
public function getRelatedProductHtmlDropdown($Products, $allAvailibleProducts, $i)
{
if (!is_array($Products)) $Products = array($Products);
....
}
我建议允许将数组和单个对象传递到函数中。您将避免在代码的不同部分进行多次检查。您可以这样做:
/**
@param array | ProductClass $Products
...
*/
public function getRelatedProductHtmlDropdown($Products, $allAvailibleProducts, $i)
{
if (!is_array($Products)) $Products = array($Products);
....
}
真正的解决方法是修复生成
$products
的代码,以便始终返回数组,而api根据大小返回不同的数据类型,这是一种糟糕的设计。我同意。然而,我使用PHP activerecord作为ORM,这给了我这种行为。真正的解决方法是修复生成$products
的代码,以始终返回数组,使用api根据大小返回不同的数据类型是不好的设计。我同意。然而,我使用PHP activerecord作为ORM,这给了我这种行为。