Есть ли проблема с использованием «общего» частного свойства в классе для создания свободного / развивающегося запроса к БД? - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь написать класс, который использует некоторый устаревший код для извлечения данных из базы данных, связанной с конкретной таблицей ( productcode )

Чтобы не повторяться, я реализуючастная собственность $ sql, которая содержит «развивающийся» запрос и, наконец, применяет к нему getResult () (как показывает этот фрагмент)

Мой вопрос: есть ли нарушение принципа проектирования при реализации этого шаблона?(специально принимает «разделяемое» свойство $ sql).Если ответ «да», почему и как правильно это сделать?

<?php

class ProductCodeDataSource
{
    use dbmanager_aware_trait;
    private $sql;

    public function findByProductId($productId)
    {
        $this->sql = [];
        $this->sql['fields'] = 'productcode_value';
        $this->sql['tables'] = 'productcode';
        $this->sql['where'][] = sprintf('productcode_product_id = %d', (int) $productId);
        $this->sql['order'][] = 'productcode_default';

        return $this;
    }

    public function findOneByProductId($productId)
    {
        $this->findByProductId($productId);
        $this->sql['limit'] = 1;

        return $this;
    }

    public function getResult()
    {
        // get_all_value is a legacy method that fetches data from mysql DB

        // build_select_ext is also a legacy method that builds sql queries from
        // $sql array structures

        return$this->dbmanager->get_all_value($db->build_select_ext($this->sql));
    }
}
...