Я ни в коем случае не прошу никого переписывать мой код, а скорее найду места, где я могу его улучшить или внедрить лучшие практики.Вот как кратко работает функция.
Функция $Class->getTaxClass()
принимает минимум 1 аргумент, который может быть либо одним идентификатором, либо массивом идентификаторов.Кроме того, он может принимать значения для определенных строк, которые он хочет захватить, например, $Class->getTaxClass($array, 'name','tid')
Так что я просто ищу способы улучшить структуру кода / лучшие практики / логику функции, котораяследует:
public function getTaxClass()
{
$arg = func_get_args();
$or = 'pa.pid = ?';
if(is_array($arg[0]))
{
$i = 1;
while($i < count($arg[0]))
{
$or .= " OR pa.pid = ?";
$i ++;
}
}
if(count($arg) == 1)
{
$pid = $arg[0];
$row = "a.*";
}
else if(count($arg > 1))
{
$pid = array_shift($arg);
$prepared_args = array();
foreach($arg as $a) {
$prepared_args[] = "a." . $a;
}
$row = implode(',', $prepared_args);
}
$stmt = _DB::init()->prepare("SELECT $row
FROM tax_class a
INNER JOIN products_to_tax_class pa
ON a.tid = pa.tid
WHERE ($or)"
);
if(is_array($arg[0]))
{
if($stmt->execute($arg[0]))
return $stmt->fetch(PDO::FETCH_ASSOC);
}
else
{
if($stmt->execute(array($pid)))
return $stmt->fetch(PDO::FETCH_ASSOC);
}
}
Очень ценится!