Получение данных по различным параметрам и использование factory method'ов

esycat

Новичок
Получение данных по различным параметрам и использование factory method'ов

Пожалуйста, посоветуйте, как лучше решить следующую задачу.

Существует класс для получения, сохранения и удаления информации из базы данных о неких объектах. Примерно так:
PHP:
class Product {
  protected $data = array();

  function __construct($id = null) { … }

  public static function getById($id) {
    $classname = __CLASS__;
    $instance = new $classname($id);
    return ($instance->load()) ? $instance : false;
  }

  public function load() { … }

  public function save() { … }

  public function delete() { … }

}
Теперь попмимо получения объекта по id необходимо добавить возможность получения по нескольким другим параметрам объекта (например, $aid и $bid), которые вместе составляют уникальный ключ в базе данных.

Как это правильно сделать и насколько вообще плоха подобная реализация?

Например, можно добавить метод, который будет сначала получать из базы данных значение $id по $aid и $bid. Но это лишний, хотя и очень быстрый запрос.
Можно сделать оверлодинг метода load() и получать данные об объекте по $id или по $aid и $bid.

И как лучше передавать $aid и $bid в объект, создаваемый из соответствующего getBy…(), если __construct() уже принимает только $id?
 
Сверху