Внутренне всегда работайте с массивом значений. Если в массиве есть только одно значение, пусть будет так, но это вовсе не должно менять логику.
Для ввода / вывода вы можете сделать так, чтобы ваши методы принимали одно значение, которое вы собираетесь превратить в массив:
public function foo($val) {
$val = (array)$val;
...
}
И / или вы можете создать «особую удобную оболочку», которая просто дает понять, что она возвращает или принимает отдельные результаты:
public function foos(array $vals) {
...
return /* array of elements */;
}
public function foo($val) {
return current($this->foos(array($val)));
}