У меня есть сомнения относительно вкладок, которые есть в моем проекте. Это страница просмотра пользователя с несколькими вкладками. Каждая вкладка содержит подробную информацию, такую как базовая информация о пользователе, информация о социальном профиле, навыки и т. Д. В настоящее время настройки представляют собой вкладки PHP с $_GET['tab']
значение. Они разные $_GET['tab']
для каждой вкладки и условия if проверяет $_GET['tab']
переменная и загружает содержимое включаемого файла в этой вкладке. На этой странице около 10 вкладок и 10 условий.
На самой странице есть другие включаемые файлы, такие как заголовок, нижний колонтитул, боковое меню и т. Д.
Я и мой друг обсудили это, и он предлагает создать отдельную страницу для каждой вкладки и избегать условий на странице.
Мои вопросы:
Я думаю, что лучшим способом было бы иметь файл index.php, который имеет $_GET['tab']
проверить и что использует require_once()
или же include()
загрузить вкладки.
Пример структуры index.php:
<?php
//...
require_once('header.php');
//...
if ($_GET['tab'] == '1')
{
require_once('first_tab.php');
}
else if ($_GET['tab'] == '2')
{
require_once('second_tab.php');
}
//...
require_once('footer.php');
?>
Нет причин беспокоиться о производительности. Используя эту логику, вам будет проще иметь чистый код и избегать файлов размером в 1 тыс. Строк.
В идеале вы должны кодировать таким образом, чтобы сценарий завершал обработку за минимальное время на сервере (используя меньше ресурсов), и вывод страницы возвращался пользователю быстрее всего в браузере. Тем не менее, иногда другие вещи, такие как время разработки и обслуживания, входят в картину. т. е. если бы вы могли сэкономить много времени на разработку и сопровождение, вы можете воспользоваться этой опцией, даже если это может привести к увеличению времени выполнения скрипта на долю мс. Таким образом, вы всегда должны найти лучший сценарий в любой такой ситуации.
В этом случае у вас будет страница с несколькими вкладками. Так что просто сравните оба метода:
Одна страница с 10 вкладками:
Плюсы:
Нужен только один файл. Однако время разработки и сопровождения здесь будет более или менее равным. Потому что, хотя вам не нужно создавать другую страницу и включать файлы шаблонов, вам придется добавить операторы IF. А для обслуживания, когда вкладка удалена, вам придется перейти в соответствующий раздел if и удалить код. С другой опцией вы можете просто удалить файл.
Минусы:
Потребуется не более 9 операторов IF, чтобы вернуть набор результатов или даже показать страницу ошибки 404 (т. Е. Недопустимое значение $ _GET).
Есть 10 разных страниц:
Плюсы:
Нет необходимости в заявлениях IF. Так что было бы немного быстрее загрузить любую из вкладок, а также вернуть страницу с ошибкой 404.
Минусы:
Вам нужно будет скопировать шаблон в 10 файлов. Тем не менее, поскольку количество вкладок никогда не будет большим, и их создание будет очень легким путем копирования первого файла, это не займет много времени. В сочетании с этим, другой метод все еще требует добавления операторов if, разницы во времени разработки нет.
Так что я бы пошел со вторым вариантом нескольких статических файлов. Параметр $ _GET предпочтителен, если у вас будет много динамических страниц (вкладок), поэтому вам не нужно создавать много статических страниц. Поскольку вкладок никогда не будет больше (10 будет максимум, я думаю), я бы сказал, что здесь рекомендуется второй вариант.
Примечание. Вышеприведенное сравнение относится к одной странице с 10 IF и 10 отдельными страницами. При включении одной страницы с файлом $ _GET с опцией белого списка (одиночный IF) разница в производительности по сравнению с отдельными страницами еще меньше, так как страница 404 вернется после одного IF & проверка массива, а не 10 IF. Таким образом, вы можете в конечном итоге сделать все, что для вас проще, если речь идет о разработке.