Конструкция continue
Конструкция continue так же, как и break, работает только "в паре" с циклическими конструкциями. Она немедленно завершает текущую итерацию цикла и переходит к новой (конечно, если выполняется условие цикла для цикла с предусловием). Точно так же, как и для break, для continue можно указать уровень вложенности цикла, который будет продолжен по возврату управления. <?php Рассмотренный скрипт выводит: Итерация 1 Грамотное использование break и continue позволяет заметно улучшить "читабельность" кода и количество блоков else. 37. Обработка запросов к веб-серверу с помощью PHP. До сих пор мы упоминали только, что запросы клиента обрабатываются на сервере с помощью специальной программы. На самом деле эту программу мы можем написать сами, в том числе и на языке PHP, и она будет делать с полученными данными все, что мы захотим. Для того чтобы написать эту программу, необходимо познакомиться с некоторыми правилами и инструментами, предлагаемыми для этих целей PHP. Внутри PHP-скрипта существует несколько способов получения доступа к данным, переданным клиентом по протоколу HTTP. До версии PHP 4.1.0 доступ к таким данным осуществлялся по именам переданных переменных (напомним, что данные передаются в виде пар «имя переменной, символ «=», значение переменной»). Таким образом, если, например, было передано first_name=Nina, то внутри скрипта появлялась переменная $first_name со значением Nina. Если требовалось различать, каким методом были переданы данные, то использовались ассоциативные массивы $HTTP_POST_VARS и $HTTP_GET_VARS, ключами которых являлись имена переданных переменных, а значениями – соответственно значения этих переменных. Таким образом, если пара first_name = Nina передана методом GET, то $HTTP_GET_VARS["first_name"]="Nina". Использовать в программе имена переданных переменных напрямую небезопасно. Поэтому было решено начиная с PHP 4.1.0 задействовать для обращения к переменным, переданным с помощью HTTP-запросов, специальный массив – $_REQUEST. Этот массив содержит данные, переданные методами POST и GET, а также с помощью HTTP cookies. Это суперглобальный ассоциативный массив, т.е. его значения можно получить в любом месте программы, используя в качестве ключа имя соответствующей переменной (элемента формы). Пример 4.2. Допустим, мы создали форму для регистрации участников заочной школы программирования, как в приведенном выше примере. Тогда в файле 1.php, обрабатывающем эту форму, можно написать следующее: <?php $str = "Здравствуйте, ".$_REQUEST["first_name"]. " ".$_REQUEST["last_name"]."! <br>"; $str.="Вы выбрали для изучения курс по ".$_REQUEST["kurs"]; echo $str; ?> Пример 4.2. Файл 1.php, обрабатывающий форму form.html Тогда, если в форму мы ввели имя «Вася», фамилию «Петров» и выбрали среди всех курсов курс по PHP, на экране браузера получим такое сообщение: Здравствуйте, Вася Петров! Вы выбрали для изучения курс по PHP После введения массива $_REQUEST массивы $HTTP_POST_VARS и $HTTP_GET_VARS для однородности были переименованы в $_POST и $_GET соответственно, но сами они из обихода не исчезли из соображений совместимости с предыдущими версиями PHP. В отличие от своих предшественников, массивы $_POST и $_GET стали суперглобальными, т.е. доступными напрямую и внутри функций и методов. 38. PHP. Операторы INCLUDE и REQUIRE. Особенности написания функций. ООП и работа с классами. Какую конструкцию и когда использовать - Include или Require? В этой статье я расскажу Вам про инструкции include, require, include_once и require_once, которые предназначены для подключения дополнительных PHP-файлов в сценарий. Синтаксис: include имя_файла; require имя_файла; Эти директивы заменяются интерпретатором в процессе выполнения скрипта на содержимое файла, указанного в качестве параметра. Кроме открытия локальных файлов, можно подключать файлы по сети используя вместо пути - URL. Эта возможность может быть блокирована параметром конфигурации PHP. Отличие данных директив состоит в том, что в отличие от include, require требует обязательного присутствия подключаемого файла и выдает критическую ошибку при его отсутствии, а include - лишь предупреждение. Разница в скорости работы минимальна. Как было сказано выше, include если не обнаружит файла, просто выдаст предупреждение, require выдаст фатальную ошибку. Давайте рассмотрим это на примере, подразумевая, что файла test.php нет. <?php // Выведет: Warning: include(test.php) // но сценарий продолжает выполняться include 'test.php'; // Выведет: text echo 'text'; ?> А теперь рассмотрим код с конструкцией require: <?php // Выведет: Fatal error: require() // и сценарий прекратит выполняться require 'test.php'; echo 'text'; ?> В большинстве случаев, особенно учитывая что на рабочем сервере вывод ошибок отключен, не подключение любого из файлов критично, и лучше остановить работу приложения, чем ловить кучу warning'ов в лог от других компонентов, которым требовались различные ресурсы и функционал данного файла (класс, константы, функции и т.п.) Конструкция require поддерживает включения удаленных файлов (начиная с версии PHP 4.3.0), если такая возможность включена в конфигурационном файле PHP. Помимо include и require существуют инструкции однократного включения - include_once и require_once. Они работают так же, как и обычные include и require, но перед подключением файла проверяют, был ли он подключен ранее или нет. Это уберегает Вас от многократного подключения одного и того же файла. До версии PHP 4.0.2 применялись следующие правила: require всегда пыталась читать файл назначения, даже если строка, в которой он указан никогда не выполнялась. Условный оператор не влиял на require. Однако, сейчас, они практически идентичны. Единственное отличие этих конструкций в том, что require требует обязательного присутствия подключаемого файла и выдает критическую ошибку при его отсутствии, а include - лишь предупреждение. Иногда бывает нужно узнать какие файлы были подключены выше описанными директивами. Для этого в php есть две идентичные функции: get_included_files и get_required_files. Каждая из них возвращает массив с именами включенных файлов.
|