Зачем использовать единую страницу index.php для всего сайта?

Я использую существующий проект PHP. Я заметил, что предыдущий разработчик использует одну страницу index.php для всего сайта, в настоящее время 10+ страниц. Это второй проект, который я видел так. Я не вижу преимущества такого подхода. На самом деле, похоже, это усложняет все, потому что теперь вы не можете просто добавить новую страницу на сайт и связать с ней. Вы также должны убедиться, что обновили главную страницу индекса с помощью предложения if, чтобы проверить тип этой страницы, а затем загрузить страницу. Кажется, что если они просто пытаются повторно использовать шаблон, было бы проще просто использовать include для верхнего и нижнего колонтитула, а затем создавать каждую новую страницу с указанными файлами.

Может кто-нибудь объяснить, почему этот подход будет использоваться? Является ли это некоторой формой шаблона MVC, с которым я не знаком? PHP - это второй язык, поэтому я не так хорошо знаком с лучшими практиками.

Я попытался сделать некоторые поиски в Google для "единой страницы индекса с php" и тому подобное, но я не могу найти никаких хороших статей, объясняющих, почему этот подход используется. Я действительно хочу отбросить этот старый материал на обочину и не продолжать по этому пути, но я хочу, чтобы у вас были здравые рассуждения, прежде чем делать это предложение.

Ответы

Ответ 1

Передний контроллер (index.php) гарантирует, что все, что является общим для всего сайта (например, проверка подлинности), всегда корректно обрабатывается независимо от того, какую страницу вы запрашиваете. Если у вас есть 50 разных файлов PHP, разбросанных повсюду, это трудно справиться. А что, если вы решите изменить порядок загрузки файлов общей библиотеки? Если у вас есть только один файл, вы можете изменить его в одном месте. Если у вас есть 50 разных точек входа, вам необходимо изменить их все.

Кто-то может сказать, что загрузка всех распространенных вещей все время является пустой тратой ресурсов, и вы должны загружать только файлы, необходимые для этой конкретной страницы. Правда. Но сегодня фреймворки PHP сильно используют ООП и автозагрузку, поэтому этот "отходы" больше не существуют.

Передний контроллер также очень упрощает для вас наличие хороших URL-адресов на вашем сайте, потому что вы абсолютно свободны использовать любой URL-адрес, который вам нравится, и отправлять его любому контроллеру/методу, который вам нужен. В противном случае вы застряли с каждым URL-адресом, заканчивающимся на .php, за которым следует уродливый список строк запроса, и единственный способ избежать этого - использовать даже более уродливые правила перезаписи в вашем файле .htaccess. Даже WordPress, который имеет десятки разных точек входа (особенно в разделе администратора), заставляет наиболее распространенные запросы проходить через index.php, чтобы вы могли иметь гибкий формат постоянной ссылки.

Почти все веб-фреймворки на других языках используют отдельные точки ввода - или, более точно, вызывается один script для загрузки процесса, который затем обменивается данными с веб-сервером. Джанго работает так. CherryPy работает так. Очень естественно делать это так на Python. Единственный широко используемый язык, который позволяет писать веб-приложения любым другим способом (кроме случаев, когда используется как CGI старого стиля script), является PHP. В PHP вы можете предоставить любому файлу расширение .php, и оно будет выполнено веб-сервером. Это очень мощно, и это упрощает изучение PHP. Но как только вы пройдете определенный уровень сложности, подход с одной точкой входа станет намного привлекательнее.

Ответ 2

Наличие одного файла index.php в общедоступном каталоге также может быть защищено в случае смены интерпретатора php. Многие фреймворки используют файл index.php для включения файла начальной загрузки за пределы корня doc. Если это произойдет, пользователь сможет увидеть исходный код этого одиночного файла, а не всю кодовую базу.

Ответ 3

Ну, если единственное, что меняется, это URL-адрес. Похоже, что это сделано по какой-либо причине, кроме эстетических целей...

Ответ 4

Как для меня - точка входа может помочь вам лучше контролировать ваше приложение: оно помогает легко обрабатывать ошибки, запросы маршрутов, отлаживать приложение.

Ответ 5

Один "index.php" - это простой способ убедиться, что все запросы к вашему приложению протекают через одни и те же ворота. Таким образом, когда вы добавляете вторую страницу, вам не нужно проверять, что загрузочная загрузка, аутентификация, авторизация, ведение журнала и т.д. Настроены - вы получаете ее бесплатно по достоинству фреймворка.

В современных веб-инфраструктурах это может быть использование фронтального контроллера, но это невозможно сказать, поскольку многие PHP-кодексы/разработчики страдают синдромом NIH.

Ответ 6

Обычно такие подходы используются, когда содержимое страниц определяется содержимым базы данных. Таким образом, вся работа будет выполнена в одном файле. Это часто наблюдается в системах CMS.