Se ho una classe DateRange
, e voglio tradurre un DateRange
in SQL (ad esempio some_col >= '2015-3-5' AND some_col <= '2015-3-5'
), dove dovrei inserire il metodo che traduce? Nulla di ciò che ho visto finora sembra molto buono.
Opzione 1: metti un metodo nella classe DateRange. (Lato negativo: accoppiamento ravvicinato della classe DateRange
e SQL?)
class DateRange {
public function toSQL ($colName) {...}
}
Opton # 2: crea una classe che contiene solo un metodo?
class DateRangeTranslator {...}
Opzione n. 3: una funzione autonoma
function dateRangeToSQLWhereCondition (DateRange $dr, $colName) {...}
Mi sto appoggiando all'opzione n. 2. Ma c'è un modo migliore?
EDIT:
È un po 'noioso, ma ecco cosa ho ora:
class DateRangeSQLBuilder {
public $dateRange;
public function buildWhereCondition ($colName) {...}
}
E lo useresti in questo modo:
$dateRange = new DateRange($fromDate, $toDate);
$builder = new DateRangeSQLBuilder($dateRange);
$whereConditions[] = $builder->buildWhereCondition('runDate');