Я пытаюсь написать класс, который использует некоторый устаревший код для извлечения данных из базы данных, связанной с конкретной таблицей ( 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));
}
}