Работая над конкретным приложением, я продолжаю писать очень похожие запросы снова и снова. Они не совсем то же самое, но имеют очень схожую форму и встроены в почти идентичные куски кода, , например.,DRY и аналогичные запросы
$Mysqli = new mysqli;
if ($Stmt = $Mysqli->prepare("SELECT foo
FROM tblFoo
WHERE something = ?")) {
$Stmt->bind_param('s', $this->_something);
$Stmt->execute();
if (0 != $Stmt->errno)
throw new Exception("blah, blah, blah");
$Stmt->bind_result($foo);
while ($Stmt->fetch()){
$this->_foos[] = new Foo($foo);
}
$Stmt->close();
} else {
throw new Exception("blah, blah, blah"););
}
}
, а потом, где-то еще ...
$Mysqli = new mysqli;
if ($Stmt = $Mysqli->prepare("SELECT bar, baz
FROM tblBar
WHERE somethingElse = ?")) {
$Stmt->bind_param('s', $this->_somethingElse);
$Stmt->execute();
if (0 != $Stmt->errno)
throw new Exception("blah, blah, blah");
$Stmt->bind_result($bar, $baz);
while ($Stmt->fetch()){
// do something else with $bar and $baz
}
$Stmt->close();
} else {
throw new Exception("blah, blah, blah"););
}
}
... а потом еще и в другом месте другой ... и т.д.
Является ли это реальное нарушение DRY ? Кажется, нет смысла писать класс для выполнения такого рода запросов (с параметрами конструктора или сеттерами для таблицы, столбца, связанных переменных и т. Д.), А затем повторное использование его во всем приложении. Но в то же время я не могу поколебать это ворчащее чувство, что я повторяюсь.
Может быть, просто так много способов написать простой запрос и что такого количества повторений, как это, следует ожидать.
Мысли?
@Kibbee - Спасибо. Я не буду использовать Hibernate, но я создал класс ActiveRecord, а затем выложил несколько классов для определенных таблиц. – PartialOrder