Задать вопрос
@thisuserhatephp
Офлайн - losers Онлайн - lusers

Как наследовать два класса в php?

Есть классы update, request, insert (это классы для работы с бд, обертка для стандартного sql) и они находятся в разных файлах. мне нужно, допустим в классе 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;
}


class 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 и как в примере выше изменить данные товара
    }
        
}



для этого мне нужно наследовать два класса.
Как мне наследовать внутри класса два других класса
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Пригласить эксперта
Ответы на вопрос 2
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
На вопрос из заголовка уже ответили, а вот к сути вопроса есть вопросы.

В первую очередь надо задать себе вопрос, а зачем вам отдельный класс на каждый вид запроса? Если там достаточно одного метода?

Если у вас отдельный квери билдер на коленке, то вы можете сделать его отдельным классом, унаследовав от него сам враппер. В котором реализовать методы для запросов
Ответ написан
Комментировать
php666
@php666
PHP-макака
плохая архитектура, плохие велосипеды
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы