Насколько правильно использовать такой вариант наследования классов (композиция)?

Есть классы update, request, insert и они находятся в разных файлах. мне нужно, допустим в классе products методы из класса requset и insert. сейчас я могу только в классе produtcs сделать extends класса request но не могу получить методы класса insert

Можно использовать композицию

private $requestData; 
private $updateData;
private $insertData;

public function __construct() {
    $this->requestData = new \core\classes\db_wrapper\request;
    $this->updateData = new \core\classes\db_wrapper\update;
    $this->insertData = new \core\classes\db_wrapper\insert;
}

Насколько это правильно и есть ли другие варианты ?

Или (скорее всего архитектура изначально не верная)

p.s учусь ООП

upd

у меня есть класс products

class Products extends \core\classes\db_wrapper\request {
        
    //__construct
    
    // получить товар по id 
    public function getById(int $int) {
        // тут можно написать обычный sql

        //но у меня есть обертка для sql которая находится в классе request
        return $this->request([
            'table_name' => 'products',
            'col_list' => '*',
            'base_query' => ' WHERE product_id = :id ',
            'query' => [
                'query' => '...',
                'joins' => '...',
                'order' => '...',
                'limit' => '...',
            ],
            'bindList' => [
                ':id' => $id
            ]
        ])->first()->get();
    }


    public function editProducts(array $arr) {
        // тут также могу сделать сдандартный sql 

        // но мне нужно использовать методы класса update и как в примере выше изменить данные товара
    }
        
}

для этого мне нужно наследовать два класса, вопрос в этом и был как мне наследовать внутри класса два других класса


Ответы (0 шт):