Почему в файлах index.php для CMS, таких как wordpress и drupal, содержится мало чего, кроме оператора include / require? - PullRequest
1 голос
/ 27 марта 2011

Некоторые популярные CMS, такие как Drupal, Wordpress и т. Д., Имеют файл index.php, который в значительной степени пуст, за исключением оператора include / require, который включает в себя какой-то другой файл PHP (как в одном файле) содержащий весь загрузочный код для CMS. В чем причина этого? Почему бы просто не переместить весь загрузочный код в index.php, если он все равно ничего не делает, кроме как включить загрузочный код?

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

Может кто-нибудь объяснить мне причину этого?

Ответы [ 4 ]

2 голосов
/ 27 марта 2011

В случае Drupal, есть другие файлы, которые делают подобную загрузку.Обычно это не обычные страницы, но они служат важным целям.С головы до головы cron.php, update.php и install.php сделайте это.Я использую процесс начальной загрузки в начале пользовательских сценариев импорта, а также сценарии, которые вызываются cron, для которых я не хочу использовать hook_cron для.

1 голос
/ 27 марта 2011

Я могу думать о двух причинах:

  • При использовании такого продукта, как Wordpress, вы иногда заканчиваете тем, что добавляете пользовательские хаки на фронт-контроллер - скажем, устанавливаете пользовательские константы, конкретные перенаправления,или дополнительный уровень контроля доступа, или что-то еще.Пустой индексный файл позволяет добавлять такие вещи, не нарушая оригинальный код продукта.

  • Наличие всего в отдельном загрузчике создает возможность перемещения всего кода(включая начальную загрузку) в местоположение вне корневого веб-каталога и включите его оттуда.

0 голосов
/ 27 марта 2011

Я бы сказал, что это хороший дизайн, потому что вы можете легко изменить путь к начальной загрузке, что позволяет очень легко изменить местоположение CMS, если это необходимо.

Еще одна веская причина - вы также можете запускать dev CMS при разработке и выпускать новые версии с одним изменением пути в index.php.

0 голосов
/ 27 марта 2011

Эстетика в основном. Вы можете иметь чистую и аккуратную структуру каталогов (вне webroot), в которой файлы начальной загрузки отделены от файла index.php. Вероятно, их несколько (против одного файла index.php), и они делают разные вещи (инициализация базы данных, авторизация).

Я также обнаружил одну или две CMS, которые запускаются в объявлении отладки (чтобы переключать ошибки отображения и предупреждения перед включением каких-либо файлов, чтобы вы могли распечатать свои ошибки до того, как php включит файл с синтаксической ошибкой, но это не совсем хорошая практика).

...