PHP в том числе в функциях - PullRequest
       14

PHP в том числе в функциях

1 голос
/ 26 апреля 2009

Я работаю над переходом с большого, несколько плохо написанного (но не очень) веб-сайта PHP на использование класса, который хранит функции, которые выполняют такие вещи, как запись стандартного заголовка страницы с аргументами для изменения таких вещей, как текст заголовок Старая версия использовала скопированный и вставленный заголовок HTML в каждом файле, например:

<div class="left"><?php include("left.php"); ?></div>

Где включенный файл имеет как не отраженный HTML, так и обычный PHP. Эти включения, кажется, можно продолжать использовать, но я просто не уверен, как они будут работать, насколько мне известно, включаемые файлы просто заменяют метод include () напрямую.

Было бы лучше:
-Переписать включенные файлы, чтобы повторить все стандартные HTML
-Просто переместите содержимое этих файлов в мою новую функцию, где это уместно (насколько мне известно, они нигде не используются, за исключением того, где они будут в моей новой функции)
-Что-то еще

Спасибо.

Ответы [ 2 ]

4 голосов
/ 26 апреля 2009

Чтение http://php.net/include:

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

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

PHP не просто копирует и вставляет код из включенного файла для замены оператора включения, как это делает C / C ++. Поэтому вам не нужно беспокоиться о том, что теги <?php и ?> во включенном файле могут испортить файл, в который он входит.

0 голосов
/ 26 апреля 2009

Написание вашего PHP для отображения всего HTML более чем неэффективно, если вы на самом деле ничего не анализируете, например, переменные. Тем не менее, я не могу избавиться от привычки делать это сам. :)

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

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

...