До сих пор мы рассматривали только функции, которые возвращают определенные значения — копии величин, использованных в инструкции return. Если задействовать return &$a, то появится сообщение о синтаксической ошибке (РНР воспринимает & только в правой части оператора присваивания сразу после знака =). Для описания функции, возвращающей ссылку, воспользуемся специальным синтаксисом описания.
<?php ## Возврат ссылки.
$а = 314;
function &R() { // & — возвращает ссылку
global $a; // объявляет $а глобальной
return $a; // возвращает, ссылку, а не значение!
}
$b =& R(); // не забудьте & !!!
$Ь = 0; // в действительности присваивает 0 переменной $а
echo $а; // выводит 0, это значит, что теперь $Ь — синоним $а
?>
Т.е. нужно поставить & в двух местах: перед определением имени функции, а также в правой части оператора присваивания при вызове функции. Использовать амперсанд в инструкции return не нужно.
Описать рекурсивную функцию PowerN(x,n) , находящую значение n-й степени числа x по формуле: x0 = 1, xn = x·xn–1 при n > 0, xn = 1 / x–n при n < 0. С помощью этой функции найти значения X^N при 5 различных значениях N для данного X.
HTTP (HyperText Transfer Protocol, протокол передачи гипертекста) – это протокол прикладного уровня, разработанный для обмена гипертекстовой информацией в Internet.HTTP предоставляет набор методов для указания способа передачи запроса серверу.
HTTP используется для коммуникаций между различными пользовательскими программами и программами-шлюзами, предоставляющими доступ к существующим Internet-протоколам, таким как SMTP (протокол электронной почты), NNTP (протокол передачи новостей), FTP (протокол передачи файлов), Gopher и WAIS. HTTP разработан для того, чтобы позволять таким шлюзам через промежуточные программы-серверы (proxy) передавать данные без потерь.
Всякая связь между клиентом и сервером осуществляется посредством сообщений. HTTP различает только два вида сообщений — сообщения-запросы и сообщения-ответы. Как показано на рис. 11.5, а, сообщения-запросы состоят из трех частей. Строка запроса (request line) имеет стандартный вид и определяет операцию, которую клиент хочет выполнить на сервере, а также ссылку на документ, связанный с запросом. Отдельное поле требуется для указания версии HTTP, которую использует клиент. В качестве операций(методов) могут быть указаны GET, POST, HEAD, PUT, DELETE и другие. В качестве ссылки чаще всего используется URL-адрес ресурса.
Ответное сообщение начинается строкой состояния (status line), содержащей номер версии и код состояния из трех цифр, как показано на рис. 11.5, б. Код кратко поясняется текстовой фразой, которая также является частью строки состояния. Так, например, код состояния 200 указывает на то, что запрос был обработан и имеет ассоциированную с ним фразу «ОК». Вот другие часто используемые коды:
400 (Bad Request)
403 (Forbidden)
404 (Not Found)
Сообщения с запросами или ответами могут содержать дополнительные заголовки. Так, например, если клиент отправляет запрос на операцию post с документом, предназначенным только для чтения, сервер отвечает сообщением с кодом состояния 405 (Method Not Allowed) и заголовком сообщения Allow, определяющим допустимые операции (например, head и get). Другой пример: клиент может поинтересоваться, не изменялся ли документ с определенного момента времени Т. В этом случае клиент отправляет запрос get, дополненный заголовком сообщения If-Modified-Sincе с определенным значением Т.