как говорится в вопросе.
Я реализовал функцию, в которой он выбирает несколько строк из базы данных (* 1), а затем (* 2) создает каждую строку как объект. После создания экземпляров Объекты затем сохраняются в массиве, а затем возвращают результат в функцию вызывающей стороны, а затем перебирают массив результатов и отображают каждый объект и добавляют форматирование html для каждого.
Вот фрагмент кода:
function find_all() {
//(*1) Fetch 30 comments from DB
$sql = 'SELECT * FROM comments';
$sql .= ' ORDER BY datetime DESC LIMIT 30';
return find_by_sql($sql);
}
function find_by_sql($sql='') {
global $database;
$result_set = $database->query($sql);
$object_array = array();
while($row = $database->fetch_array($result_set)) {
//(*2) Instantiate each row to a Comment object
// and then stores each comment to an object array
$object_array[] = Comment::instantiate($row);
}
return $object_array;
}
//(*3) Format and display each result.
$comments = find_all();
foreach ( $comments as $comment ) {
// Not sure if syntax is correct.. anyhow..
echo "<li>$comment->get_text()</li>";
}
Тем не менее, мне нравится вышеуказанный подход, так как он чище, проще для чтения, удобен в обслуживании и имеет больше ООП. Но проблема в том, что для отображения требуется больше времени, чем для простой итерации каждого результата, чем для отображения каждого результата после его получения, например:
while ($row = mysql_fetch_array($sql)) {
echo "<li>$row['text']</li>";
}
Я знаю причину, почему это медленно. Что я хочу знать, есть ли лучший способ решить проблему выше?
Хотя кэширование может быть хорошей идеей, оно не поможет, потому что мне нужно обновлять список каждый раз, когда список извлекается.