#php
#php
Вопрос:
Оказывает ли существенное влияние на производительность (как в браузере, так и на сервере) выход из движка рендеринга PHP и вход из него? Пример:
<p>Lorem ipsum..</p>
<?php
myPHPfunction();
?>
<p>more html</p>
<?php
anotherPHPfunction();
?>
Если это сильно влияет на производительность, как я могу объединить весь PHP вместе, особенно если большинство моих страниц представляют собой статический HTML?
Комментарии:
1. Я не знаю о проблеме с производительностью, но это не должно повлиять на IMO. И если вам действительно нужно добавить логику в свои представления, попробуйте сделать логический код более привлекательным 🙂 Например, используйте <?php foreach(…):?> вместо <php foreach (…) {?>…
Ответ №1:
С точки зрения производительности, в этом действительно нет недостатка. Когда вы используете эти инструкции echo, PHP создает внутренний буфер вывода, который в конечном итоге будет сброшен в браузер после завершения выполнения страницы. Есть способы обойти это, такие как ob_flush
.
Однако с точки зрения разделения задач и общего дизайна программного обеспечения плохо сочетать бизнес-логику (А НЕ логику просмотра, как указал Брентон ниже) с вашими представлениями. Ваш код становится сложнее поддерживать, если у вас такой тип настройки.
Комментарии:
1. Однако не путайте «бизнес-логику» с «логикой представления», иначе вы все равно можете столкнуться с беспорядком из-за слишком большого количества уровней абстракции. Такие вещи, как зацикливание списка для создания таблицы или форматирование цены в формате $ ##.## являются логическими для просмотра, и нет необходимости отделять их от html (хотя вы все еще можете создавать «вспомогательные» функции, чтобы вам не приходилось повторяться или избегать больших фрагментов логики в вашем HTML).
2. Это в основном то, что я бы сказал. Может быть какое-то очень небольшое снижение производительности, но если вы находитесь в точке, где это снижение производительности имеет для вас значение, у вас есть дела поважнее, и есть лучшие способы оптимизировать ваш код, чем пытаться оптимизировать при включении и выключении движка рендеринга. И 1 для разделения бизнес-логики и представления (еще одна отличная причина использовать фреймворк, подобный CodeIgniter).