У меня есть класс Motor
, который я использую, чтобы предоставить мне различные характеристики двигателя.Какой шаблон дизайна я использую, когда мне нужно вызвать вспомогательную функцию, прежде чем я создам объект?
я в настоящее время имею следующие методы в рамках Motor
класса:
public function getIdFromModel($model)
{
$sql = "SELECT id FROM ... WHERE model = ...";
return process($sql);
}
public function getIdByFrame($size)
{
$sql = "SELECT id FROM ... WHERE size = ...";
return process($sql);
}
выше являются дополнительными функциями, используемых для получения двигателя id
из базы данных, когда некоторые другие не- id
параметра известен. id
затем используется для создания реального двигателя.
Прежде чем я успел сделать:
$model = "ABC";
$motor = new Motor();
//retrieve ID
$id = $motor->getIdFromModel($model)
$motor-loadSpecs($id);
$motor = new Motor($id);
Моя проблема появляется после того, как я изменил структуру моего класса требует знания id
в Motor
времени создания. Теперь мне нужно сделать:
$model = "ABC";
//retrieve ID
$id = $???->getIdFromModel($model)
$motor = new Motor($id);
Вопрос
Какая структура/класс/шаблон/функции я использую вместо ???
выше?
Я знаю, что могу создать класс только для вышеупомянутых двух функций, но я чувствую, что для этого есть лучший ответ/шаблон, и я хотел спросить. Я не вижу значение для создания класса только для методов «что-то-id». Я хотел бы иметь какое-то значение.
Отражение (я думаю) http://code.tutsplus.com/tutorials/reflection-in-php--net-31408 – circusdei
Я бы рекомендовал [Образцовый шаблон] (http://martinfowler.com/eaaCatalog/repository.html), который возвращает ' $ motor' вместо настройки геттера с помощью отдельных методов «увлажнения». На мой взгляд, объект не создает себя. См. Также: http://symfony.com/doc/current/book/doctrine.html#fetching-objects-from-the-database –
Вы когда-нибудь соглашались на любой подход? –