Подскажите, как улучшить этот код

Подскажите пожалуйста как переписать 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 шт):

Автор решения: Alexandr

В PHP есть функция array_sum() При помощи array_column можно выбрать необходимые данные из массива, а затем подсчитать сумму.

Хотя, если вы выводите эти данные в браузер, то сумму значений можно считать уже на стороне клиента при помощи JS

→ Ссылка