Тема 2. Введение в PHP (переменные и операторы)
Программы PHP могут выполняться двумя способами: как сценарное приложение Web-сервером и как консольные программы. Поскольку, нашей задачей является программирование web-приложений, мы преимущественно будем рассматривать первый способ.
PHP, как правило, используется сугубо для программирования приложений, связанных с Интернет. Однако, PHP можно еще использовать в качестве интерпретатора командной строки, в основном в *nix-системах. Последнее возможно при помощи CORBA и COM интерфейсов, а также при помощи расширения PHP-GTK. При таком использовании PHP возможно решение следующих задач:
· создание кросс-платформенных GUI приложений при помощи библиотеки PHP-GTK;
· автоматизация некоторых задач под Windows и Linux.
Рассмотрим процесс выполнения php-сценария при обращении браузера к серверу. Вначале браузер запрашивает страницу с расширением .php, после чего web-сервер пропускает программу через движок PHP и выдаёт результат в виде html-кода.
Команды PHP
Команды PHP заключаются в специальные теги, которые бывают четырёх видов (они полностью эквивалентны):
1. Инструкция обработки XML:
<?php
...
?>
2. Инструкция обработки SGML:
<?
...
?>
3. Инструкция обработки сценариев HTML:
<script language = "php">
...
</script>
4. Инструкция в стиле ASP:
<%
...
%>
Внутри какого-либо блока кода можно выйти из PHP, при условии, что дальше мы войдем в него снова и закончим код, т.е., возможна следующая конструкция (пример 2.1.1):
<?
if($i<3)
{
echo("<p>Hello, world!<p>");
?>
<p>Hello!</p>
// эта строка не интерпретируется как код PHP
// и выводится только если блок кода выполняется
<?
} // if
?>
Команда echo в PHP применяется для вывода фактически всего, что встречается на web-страницах (текст, разметку HTML, числа). Смысл ее действия понятен из приведенного примера.
Комментарии PHP
PHP предоставляет несколько методов для вставки комментариев. Проще всего пользоваться двойным слешем в стиле языка С (//), после чего PHP игнорирует всё, что расположено до конца строки. Также можно пользоваться многострочными комментариями в стиле С (/*…*/). Для однострочных комментариев можно также пользоваться символом решетки (#) (комментарий скриптовых языков UNIX).
Пример 2.2.1:
<?
echo("<p>Hello</p>"); // комментарий
echo("<p>Hello</p>"); # комментарий
/*
и это тоже комментарии
*/
?>
Следует помнить о том, что стили комментариев PHP действуют только внутри ограничителей PHP. Если PHP встретит эти символы комментариев вне ограничителей, то они, как и любой текст, будут помещены на html-страницу.
Пример 2.2.2:
<?
echo("<p>Hello</p>"); // нормальный комментарий
?>
// а вот этот комментарий отобразится браузером.
<!-- Комментарий HTML.
Будет виден в исходном коде HTML, но не в браузере -->
Заметим, что комментарии можно вставлять не только после конца оператора, а, например, и вот так:
<?
$a = "Hello, world";
echo strstr($a,"H");
// комментарий
?>
Переменные PHP
В РНР переменные начинаются со знака доллара ($). За этим знаком может следовать любое количество буквенно-цифровых символов и символов подчеркивания, но первый символ не может быть цифрой. Следует также помнить, что имена переменных в РНР чувствительны к регистру, в отличие от ключевых слов.
При объявлении переменных в РНР не требуется явно указывать тип переменной, при этом одна и та же переменная может иметь на протяжении программы разные типы.
Переменная инициализируется в момент присваивания ей значения и существует до тех пор, пока выполняется программа. Т.е., в случае web-страницы это означает, что до тех пор, пока не завершен запрос.
Внешние (суперглобальные) переменные PHP
После того, как запрос клиента проанализирован веб-сервером и передан движку РНР, он устанавливает ряд переменных, которые содержат данные, относящиеся к запросу и доступны во время его выполнения. Если директива register_globals в php.ini выставлена в on, РНР берёт переменные окружения системы и создаёт переменные с теми же именами и значениями в окружении сценария РНР для того чтобы сценариям, расположенным на сервере, были доступны особенности системы клиента.
Вне зависимости от значения директивы register_globals, движок PHP создаёт ряд суперглобальных переменных:
· $GLOBALS - Содержит ссылку на каждую переменную, доступную в данный момент в глобальной области видимости скрипта. Ключами этого массива являются имена глобальных переменных. $GLOBALS существует, начиная с PHP 3.
· $_SERVER - Переменные, установленные web-сервером либо напрямую связанные с окружением выполнения текущего скрипта. Аналог старого массива $HTTP_SERVER_VARS (который по-прежнему доступен, но не рекомендуется).
· $_GET - Переменные, передаваемые скрипту через HTTP GET. Аналог старого массива $HTTP_GET_VARS (который по-прежнему доступен, но не рекомендуется).
· $_POST - Переменные, передаваемые скрипту через HTTP POST. Аналог старого массива $HTTP_POST_VARS (который по-прежнему доступен, но не рекомендуется).
· $_COOKIE - Переменные, передаваемые скрипту через HTTP cookies. Аналог старого массива $HTTP_COOKIE_VARS (который по-прежнему доступен, но не рекомендуется).
· $_FILES - Переменные, передаваемые скрипту через HTTP post-загрузку файлов. Аналог старого массива $HTTP_POST_FILES (который по-прежнему доступен, но не рекомендуется).
· $_ENV - Переменные, передаваемые скрипту через окружение. Аналог старого массива $HTTP_ENV_VARS (который по-прежнему доступен, но не рекомендуется).
· $_REQUEST - Переменные, передаваемые скрипту через механизмы ввода GET, POST и COOKIE, и которым, следовательно, нельзя доверять. Наличие и порядок включения переменных в этот массив определяется в соответствии с директивой конфигурации PHP variables_order. Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0.
Рассмотрим, как РНР создаёт группу GET-переменных, которые создаются при анализе строки запроса. Строка запроса представляет собой информацию, следующую за символом "?" в запрошенном URL. РНР разбивает строку запроса по символам & на отдельные элементы, а затем ищет в каждом из этих элементов знак "=". Если знак "=" найден, то создаётся переменная с именем из символов, стоящих слева от знака равенства. Рассмотрим следующую форму (пример 2.4.1):
<form action = "http://localhost/PHP/test.php" method="get">
HDD: <input type="text" name="hdd" /><br>
CDROM: <input type="text" name="cdrom" /><br>
<input type="submit"/>
Если в этой форме в строке HDD набрать, к примеру, "Maxtor", а в строке CDROM "Nec", то она сгенерирует следующую форму запроса:
http://localhost/PHP/test.php?hdd=Maxtor&cdrom=Nec
В нашем случае РНР создаст следующие переменные:
$hdd = "Maxtor"
$cdrom = "Nec"
Если register_globals==off, то РНР доступ к данным переменным следует осуществлять через массив $_GET:
$_GET["hdd"] = "Maxtor"
$_GET["cdrom"] = "Nec"
Если запрос страницы выполняется при помощи метода POST, то появляется группа POST-переменных, которые интерпретируются также и помещаются в массив $_POST.
Константы PHP
Константы объявляются в РНР при помощи функции define():
define(CONSTANT, value)
Первый параметр этой функции – имя константы, второй – её значение. При использовании константы на неё ссылаются по имени (пример 2.5.1):
<?
define (CONSTANT1,15);
define (CONSTANT2,"\x20"); // код пробела
define (CONSTANT3,"Hello");
echo (CONSTANT1);
echo (CONSTANT2);
echo (CONSTANT3);
?>
По традиции имена констант пишут буквами верхнего регистра. Существует функция defined(), которая проверяет, определена ли константа (пример 2.5.2):
<?
define(CONSTANT,"Hello");
if(defined("CONSTANT"))
{
echo("<p>CONSTANT is defined</p>");
}
?>
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|