$result = $db->query('SELECT блаблабла') or error('всё сломалось', __FILE__, __LINE__, $db->error());
while ($line = $db->fetch_assoc($result))
{
// всё-равно что.
// в конечном счёте данные будут выведены на страницу через "шаблон"
// типично такое говно:
$line['text'] = htmlspecialchars($line['text']);
// копятся данные как-то так:
$myTpl->addItem($line);
}
Здесь функция error() создает страничку с сообщением об ошибке и делает exit();
Приводить исходники DBAL и error смысла нет и так всё понятно.
IMHO, следующий уровень абстракции и юзабельности БЕЗ псевдообъектного мозголомства должен выглядеть так:
$allLines = $db->allLines('SELECT блаблабла');
$myTpl->addItem($allLines);
1. Здесь нет перехвата ошибки через error(). Вместо этого внутри DBAL должны генерироваться trigger_error(), а на старте приложения должен стоять set_error_handler() и в обработчике вычитывание file и line через debug_backtrace()
2. Здесь нет цикла чтения. Такая регулярная операция должна делаться через сам DBAL. allLines()
3. Экранизация html перед выводом — задача модуля представления. Если в нем нет встроенного htmlspecialchars(), вы делаете слишком много лишней работы.
Помоему всё достаточно очевидно, но почему-то в "крутых" движках до этого не доходят. Обсудим?