#php #ajax
#php #ajax
Вопрос:
Я уже некоторое время работаю над созданием новостной системы. Я получаю разметку для каждого новостного сообщения, как показано ниже:
$newsArray = array();
$result = News::getNews($database, 5);
while($row = mysql_fetch_assoc($result))
$newsArray[] = new News($row);
foreach($newsArray as $news)
echo $news->getMarkup($database);
Является ли это эффективным способом получения моих новостных сообщений? У меня есть файл, содержащий разметку моего фактического новостного сообщения, который называется newspost.html — и моя функция getMarkup () выглядит следующим образом:
public function getMarkup($database) {
$html = file_get_contents('include/html/newspost.html');
$find = array("{ID}", "{TITLE}", "{CONTENT}", "{USERNAME}", "{TIME}");
$replace = array($this->data['news_id'], $this->data['title'], $this->data['content'], $this->data['username'], $this->data['time']);
for ($i = 0; $i < count($find); $i) {
$html = str_replace($find[$i], $replace[$i], $html);
}
return $html;
}
очевидно, я не могу получить файл .php, поэтому мне пришлось создать собственное решение по добавлению конкретной новостной информации к каждому сообщению. Однако, я чувствую, что это очень неэффективно.
Я хотел бы получить несколько советов о том, как решить это более элегантным способом. Я не хочу встраивать свой код postnews непосредственно в мою функцию PHP, поскольку мне не нравится смешивать структуру и контент.
Обратная связь приветствуется!
Комментарии:
1. 1. я заметил, что вы перечитываете include/html/newspost.html для каждого отдельного элемента это ужасно.
Ответ №1:
1 быстрое исправление, перемещение $html = file_get_contents('include/html/newspost.html');
за getMarkup
пределы функции.
и еще 1 идея, выполните обработку html на стороне клиента, просто отправьте необработанные данные post (json_encode) в ваш ajax-код, пусть ajax-код выполняет обработку.
Ответ №2:
В принципе, все выглядит нормально. Проблемы, на которые указали другие комментаторы, на самом деле не имеют большого значения. Ваши запросы к базе данных выполняются медленнее, чем повторное извлечение файла из памяти, и немного str_replace не подходит ни здесь, ни там.
Нам нужно рассказать, какое отношение к этому имеет AJAX, и неясно, о чем вы говорите в паре мест (например, «не удается получить файл PHP»).