2013-06-10 3 views
1

Глядя на создание моего первого приложения PHP с нуля. Так что простите вопрос о нобе.это правильное использование auto_prepend_file

Правильно ли использовать auto_prepend_file для управления общими переменными, такими как соединение по умолчанию db или запускать session_start(), или есть более благоприятный способ определения переменных «приложения» и добавления управления сеансом на каждую страницу?

Я спрашиваю, потому что я встретил предупреждение в netbeans при использовании переменной, определенной в include. Поиск google Я видел несколько сообщений о том, что определение переменных в include было плохой практикой; так что хорошая практика в PHP?

Благодаря

+0

auto_prepend имеет свои применения, но в целом это не то, от чего вы зависите. Существует много случаев, когда вам не нужен конкретный скрипт, но auto_prepend немой и будет пытаться полностью присоединить к нему все. –

+0

@MarcB, тогда какой предпочтительный метод для управления общими настройками приложения? действительно ли PHP действительно ожидает include() или require() или session_start() на каждой отдельной странице? – Travis

+0

Чаще всего используется mod_rewrite и сценарий диспетчера, который устанавливает переменную, среду сеанса и библиотеки, а затем вызывает запрошенную страницу оттуда. 'auto_prepend_file' используется для более базовых задач, например, для отмены неправильных конфигураций php.ini или для загрузки совместимых прокладок. – mario

ответ

2

Большинство макетов приложений современные PHP не имеют необходимых ресурсов, загруженных в коде.

Вместо этого большинство из них содержит autloader, который анализирует запрашиваемый ресурс (имя класса) и загружает правильный файл. Тогда большинство вещей инкапсулируется в объекты и классы.

Наиболее распространенная Standad сейчас PSR-0

Configs в основном хранятся в конфигурационных файлах различных форматов, как XML. Тогда часто используется объект, который используется для чтения этих конфигураций. Затем из этого объекта создается доверие для использования в определенных местах, например, для соединений с базой данных.

Кроме того, те вещи, которые выполняются, в основном не выполняются в коде, а выполняются сами по себе, привязывая их к определенным точкам в программе.

Большинство фреймовых фреймов имеют вещь, называемую «крючками» или «событиями». В основном это не что иное, как простой список с именами событий и для каждой записи список функций, которые должны выполняться.

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

Вы спрашиваете себя, возможно, у вас есть петли? Простой ответ - да.

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

Это хорошая практика? Я честно не знаю.

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

Что касается auto_prepend_file, это то, чего я бы не сделал.

Я могу сделать это, если у меня нет другого пути. Например, если я хочу выполнить некоторый код, который защищает мое приложение от ddos ​​или инъекций безопасности. И я просто не хочу связываться с самим приложением.

Но если я что-то создаю с самого начала, я бы этого не сделал.

Почему? Maby Я хочу переключиться на новый веб-сервер или даже выполнить свою программу в командной строке. Тогда у меня проблема, если я определил авто запятую в apache ...

or maby У меня есть код, где я не хочу этого вообще? Только один файл в моем приложении, где я просто не хочу его, потому что он мне не нужен, и он требует ресурсов или является угрозой безопасности?

Я часто пишу приложение, в котором у меня есть, например, имя пользователя и passwort databse непосредственно в функции, которая exstablishes ссылки.

Почему? Почему нет? Потому что я не хочу, чтобы он был доступен в глобальном масштабе. Если его в коде функции, его сложнее для другого, возможно, небезопасного кода, получить к нему доступ.

Самое распространенное средство - иметь конфигурационный файл и просто требовать его где-то в вашем приложении.

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

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

Смежные вопросы