Большинство макетов приложений современные PHP не имеют необходимых ресурсов, загруженных в коде.
Вместо этого большинство из них содержит autloader, который анализирует запрашиваемый ресурс (имя класса) и загружает правильный файл. Тогда большинство вещей инкапсулируется в объекты и классы.
Наиболее распространенная Standad сейчас PSR-0
Configs в основном хранятся в конфигурационных файлах различных форматов, как XML. Тогда часто используется объект, который используется для чтения этих конфигураций. Затем из этого объекта создается доверие для использования в определенных местах, например, для соединений с базой данных.
Кроме того, те вещи, которые выполняются, в основном не выполняются в коде, а выполняются сами по себе, привязывая их к определенным точкам в программе.
Большинство фреймовых фреймов имеют вещь, называемую «крючками» или «событиями». В основном это не что иное, как простой список с именами событий и для каждой записи список функций, которые должны выполняться.
Когда какая-то часть кода «срабатывает», он использует вспомогательный класс, который просматривает записи списка и выполняет их также.
Вы спрашиваете себя, возможно, у вас есть петли? Простой ответ - да.
Вся идея всего этого заключается в том, что вам нужно изменить ни один существующий код в любом месте, если вы хотите принести новый код в свое приложение.
Это хорошая практика? Я честно не знаю.
Если проект превышает определенный размер, и на нем программируются несколько человек, может потребоваться некоторый стандарт. И способ не изменять существующий код на практике доказал свою эффективность.
Что касается auto_prepend_file, это то, чего я бы не сделал.
Я могу сделать это, если у меня нет другого пути. Например, если я хочу выполнить некоторый код, который защищает мое приложение от ddos или инъекций безопасности. И я просто не хочу связываться с самим приложением.
Но если я что-то создаю с самого начала, я бы этого не сделал.
Почему? Maby Я хочу переключиться на новый веб-сервер или даже выполнить свою программу в командной строке. Тогда у меня проблема, если я определил авто запятую в apache ...
or maby У меня есть код, где я не хочу этого вообще? Только один файл в моем приложении, где я просто не хочу его, потому что он мне не нужен, и он требует ресурсов или является угрозой безопасности?
Я часто пишу приложение, в котором у меня есть, например, имя пользователя и passwort databse непосредственно в функции, которая exstablishes ссылки.
Почему? Почему нет? Потому что я не хочу, чтобы он был доступен в глобальном масштабе. Если его в коде функции, его сложнее для другого, возможно, небезопасного кода, получить к нему доступ.
Самое распространенное средство - иметь конфигурационный файл и просто требовать его где-то в вашем приложении.
Также большинство современных приложений не имеют разных php-файлов, которые загружаются веб-сервером, поэтому нет необходимости иметь один и тот же код в нескольких местах.
Вместо этого большинство современных приложений имеют один php-файл (в основном index.php), который является сервером как такой «загрузочный» файл. Веб-сервер переписывает каждый запрос вместо запросов на статические ресурсы, такие как изображения, и когда-либо еще, например, решение о том, какой контент показывать при просмотре запрошенного URL-адреса, обрабатывается в приложении, =.
auto_prepend имеет свои применения, но в целом это не то, от чего вы зависите. Существует много случаев, когда вам не нужен конкретный скрипт, но auto_prepend немой и будет пытаться полностью присоединить к нему все. –
@MarcB, тогда какой предпочтительный метод для управления общими настройками приложения? действительно ли PHP действительно ожидает include() или require() или session_start() на каждой отдельной странице? – Travis
Чаще всего используется mod_rewrite и сценарий диспетчера, который устанавливает переменную, среду сеанса и библиотеки, а затем вызывает запрошенную страницу оттуда. 'auto_prepend_file' используется для более базовых задач, например, для отмены неправильных конфигураций php.ini или для загрузки совместимых прокладок. – mario