Как управляющие структуры РНР могут быть использованы наиболее эффективно для генерации HTML-дескрипторов (или любого другого вывода). Как вам уже известно, РНР — это встроенный язык, который позволяет кодировать HTML-дескрипторы и поддерживать сценарии в одном и том же документе.
Однако РНР развивает эту концепцию дальше, позволяя вам "отключить" РНР- интерпретатор внутри управляющей структуры и встроить не-РНР вывод без потери логического контекста управляющей конструкции.
Давайте рассмотрим пример, в котором предпринимается попытка отобразить картинку в HTML-документе в случае, когда значение переменной $display установлено в true. Для начинающего наиболее общее решение выглядит так:
i f ($display) { echo ""; 1 ?>
Хотя это решение и вполне работоспособно, очевидно, что оно недостаточно изящно. Чтобы исправить положение, существует альтернативный синтаксис управляющих структур РНР, который позволяет вам выйти из интерпретатора РНР и передать вывод непосредственно "сквозь" РНР. Для данного оператора if этот синтаксис выглядит так:
Текст, который должен быть отправлен на выход,
но не должен интерпретироваться РНР
В случае предыдущего примера этот синтаксис может быть применен таким обра-
зом, чтобы дать тот же результат:
<IMG SRC="/gfx/mypicture.jpg">
Этот альтернативный синтаксис допустим для каждой управляющей структуры РНР. Вместо фигурной скобки ({) указывается двоеточие (:) для обозначения начала управляющей структуры, и каждая из управляющих структур завершается соответствующим предложением (endif, endwhile, endfor и так далее). В основном этот альтернативный синтаксис применяется, когда вы хотите отобразить неинтерпретируемый PHP-код, однако он может использоваться в любом месте внутри РНР-сценария.
К тому же, этот синтаксис не обязателен для предотвращения интерпретации отдельного сегмента в документе. Следующий вариант также вполне приемлем, хотя и
может несколько озадачить:
<IMG SRC="/gfx/mypicture.jpg">
Следует отметить, что отключение интерпретатора РНР не ограничивается управляющими структурами. В любой точке внутри сценария интерпретатор может быть отключен с применением допустимого дескриптора закрытия РНР и включен обратно с помощью допустимого дескриптора открытия РНР (описание допустимых дескрипторов было представлено ранее в этой главе).
|