Подскажите, как улучшить этот код
Подскажите пожалуйста как переписать PHP код на SOLID. Есть база данных с котами и весом каждого кота. Обычно данные о котах просто выводятся, но в определенном случае нужно не только вывести данные, но и получить массив с весом каждого кота для дальнейшей обработки (то под коментариями). Подскажите как это правильно реализуется на SOLID?
<?
abstract class Cats {
protected bool|\PDOStatement $cursor;
protected array $queryParams;
public function __construct(array $params = []) {
$this->queryParams = $params;
}
abstract function Query();
public function print():void {
global $DB;
$this->Query();
/*
$weights = [];
*/
while ($cat = $DB->get_row($this->cursor)) {
echo $cat['name'] . ': '. $cat['weight'].'<br>';
/*
$weights[] = $cat['weight'];
*/
}
/* return $weights; */
}
}
class CatsWeights extends Cats {
public function Query(): void {
global $DB;
$this->cursor = $DB->query('SELECT `name`, `weight` WHERE `weight` > ?', $this->queryParams);
}
}
Пробовал добавить в абстрактный класс пустой метод Calculate и вызывать его в цикле. Но кажется что это очень много лишних вызовов
Ответы (1 шт):
В PHP есть функция array_sum() При помощи array_column можно выбрать необходимые данные из массива, а затем подсчитать сумму.
Хотя, если вы выводите эти данные в браузер, то сумму значений можно считать уже на стороне клиента при помощи JS