Синтаксис языка php. Синтаксис PHP. Oбласть видимости переменых
PHP поддерживает альтернативный синтаксис для некоторых управляющих конструкций, а именно для: if, switch, while, for и foreach . Основная форма альтернативного синтаксиса заключается в замене открывающей фигурной скобки на двоеточие (:), завершающая фигурная скобка заменяется на ключевое слово endif, endswitch, endwhile, endfor и endforeach , которое соответствует используемой конструкции.
ifПри использовании в управляющих конструкциях альтернативного синтаксиса, фигурные скобки не ставятся, даже если используется несколько инструкций. После условия ставится двоеточие, после которого указывается одна или более инструкций, в самом конце, для указания завершения общей конструкции используется ключевое слово endif .
Замечание : если для определения нескольких условий if/elseif используется альтернативный синтаксис, в этом случае можно использовать только elseif в одно слово, т.е. вы не должны разделять else if в два слова, так как это вызовет фатальную ошибку в PHP.
Смешивание двух видов синтаксиса в одной конструкции не поддерживается, это правило относится ко всем операторам указанных в этой главе.
Правила альтернативного синтаксиса описанные в этом разделе также действуют и для остальных управляющих структур. Поэтому ниже будут просто приведены примеры.
switch while forОбратите внимание, для вложенных конструкций, может применяться и синтаксис включающий фигурные скобки, но так делать не рекомендуется, так как это снижает читаемость кода.
Дополнительные сведения
Теперь рассмотрим вопрос о том, когда лучше использовать альтернативный синтаксис, а заодно вы узнаете, как еще можно использовать управляющие конструкции.
Приведем простой пример:
A равно 5
В приведенном примере, блок HTML-кода "A равно 5" вложен внутрь конструкции if написанной с альтернативным синтаксисом. HTML-блок будет показан только в том случае, если переменная $a будет равна 5 .
Как вы уже могли догадаться из примера выше, альтернативный синтаксис можно использовать для вставок в HTML-разметку. Так как в этом случае код php и html будут разделены, это упрощает верстку страницы.
Рассмотрим примеры для других конструкций:
Значение равно 1.
Значение не известно.
Конечно не обязательно использовать представленный синтаксис, можно пользоваться и стандартной записью, с использованием фигурных скобок, но в этом случае код будет менее читабельным.
A равно 5
A не равно 5
Синтаксис оператора foreach и его альтернативная запись будут рассмотрены позднее, а именно во время изучения массивов и объектов.
Общие понятия
Язык PHP специально предназначен для веб-программирования. PHP сочетает достоинства языков C и Perl и при этом весьма прост в изучении и обладает значительными преимуществами перед традиционными языками программирования.
Синтаксис PHP очень напоминает синтаксис языка C и во многом заимствован из таких языков как Java и Perl.
Программист С очень быстро освоит язык PHP и сможет использовать его с максимальной эффективностью.
В принципе, в PHP есть практически все операторы и функции , имеющиеся в стандартном GNU С (или их аналоги), например есть циклы (while, for), операторы выбора (if, switch), функции работы с файловой системой и процессами (fopen, *dir, stat, unlink, popen, exec), функции ввода-вывода (fgets,fputs,printf) и множество других...
Цель данного раздела - краткое ознакомление с основами синтаксиса языка PHP. Более подробную информацию по конкретным составляющим синтаксиса PHP вы найдете в соответствующих разделах.
PHP и HTML
Cинтаксис любого языка программирования гораздо легче "почувствовать" на примерах, нежели используя какие-то диаграммы и схемы. Поэтому приведем пример простейшего скрипта на PHP:
Пример
Вы уже наверняка заметили, что это классический скрипт, с которого начинают изучение языка программирования.
Обратите внимание, что HTML-код корректно обрабатывается интерпретатором PHP.
Начало сценария вас может озадачить: разве это сценарий? Откуда HTML-тэги и ? Вот тут-то и кроется главная особенность (кстати, чрезвычайно удобная) языка PHP: PHP-скрипт может вообще не отличаться от обычного HTML-документа.
Идем дальше. Вы, наверное, догадались, что сам код сценария начинается после открывающего тэга . Итак, между этими двумя тэгами текст интерпретируется как программа, и в HTML-документ не попадает. Если же программе нужно что-то вывести, она должна воспользоваться оператором echo.
Итак, PHP устроен так, что любой текст, который расположен вне программных блоков, ограниченных , выводится в браузер непосредственно. В этом и заключается главная особенность PHP, в отличие от Perl и C, где вывод осуществляется с помощью стандартных операторов.
Разделение инструкций
Инструкции разделяются также как и в C или Perl - каждое выражение заканчивается точкой с запятой.
Закрывающий тег (?>) также подразумевает конец инструкции, поэтому два следующих фрагмента кода эквиваленты:
Комментарии в PHP скриптах
Написание практически любого скрипта не обходится без комментариев.
PHP поддерживает комметарии в стиле "C", "C++" и оболочки Unix. Например:
Однострочные комментарии идут только до конца строки или текущего блока PHP-кода, в зависимости от того, что идет перед ними.
Это
пример.
Заголовок вверху выведет "Это пример".
Будьте внимательны, следите за отсутствием вложенных "C"-комментариев, они могут появиться во время комментирования больших блоков:
Однострочные комментарии идут только до конца строки или текущего блока PHP-кода, в зависимости от того, что идет перед ними. Это означает, что HTML-код после // ?> БУДЕТ напечатан: ?> выводит из режима PHP и возвращает в режим HTML, но // не позволяет этого сделать.
Переменные в PHP
Имена переменных обозначаются знаком $ . То же самое "Привет, я - скрипт PHP! " можно получить следующим образом:
Типы данных в PHP
PHP поддерживает восемь простых типов данных:
Четыре скалярных типа:
Boolean (двоичные данные)
- integer (целые числа)
- float (числа с плавающей точкой или "double")
- string (строки)
Два смешанных типа:
Array (массивы)
- object (объекты)
И два специальных типа:
resource (ресурсы)
NULL ("пустые")
Существуют также несколько псевдотипов:
Mixed (смешанные)
- number (числа)
- callback (обратного вызова)
Подробно о типах данных в PHP
Выражения в PHP
Основными формами выражений являются константы и переменные. Например, если вы записываете "$a = 100", вы присваиваете "100" переменной $a:
В приведенном примере $a - это переменная, = - это оператор присваивания, а 100 - это и есть выражения. Его значение 100.
Выражением может быть и переменная, если ей сопоставлено определенное значение:
$x = 7;
$y = $x;
В первой строке рассмотренного примера выражением является константа 7, а во второй строке - переменная $x, т.к. ранее ей было присвоено значение 7. $y = $x также является выражением.
Подробно о выражениях в PHP вы найдете
Операторы PHP
Оператором называется нечто, состоящее из одного или более значений (выражений, если говорить на жаргоне программирования), которое можно вычислить как новое значение (таким образом, вся конструкция может рассматриваться как выражение).
Примеры операторов PHP:
Операторы присвоения:
Комбинированные операторы:
Строковые операторы:
Существуют также логические операторы и операторы сравнения, однако их принято рассматривать в контексте управляющих конструкций языка.
Подробную информацию по операторам PHP вы найдете .
Управляющие конструкции языка PHP
Основными конструкциями языка PHP являются:
Примеры конструкций языка PHP:
Приведенный пример наглядно показывает использование конструкции if совместно с оператором сравнения ($a > $b).
В следующем примере если переменная $a не равна нулю, будет выведена строка "значение a истинно (true), то есть показано взаимодействие условного оператора (конструкции) if с логическим оператором:
А вот пример цикла while:
Информацию по всем управляющим конструкциям PHP вы можете получить
Пользовательские функции в PHP
В любом языке программирования существуют подпрограммы. В языке C они называются функциями, в ассемблере - подпрограммами, а в Pascal существуют два вида подпрограмм: процедуры и функции.
В PHP такими подпрограммами являются.
Подпрограмма - это специальным образом оформленный фрагмент программы, к которому можно обратиться из любого места внутри программы. Подпрограммы существенно упрощают жизнь программистам, улучшая читабельность исходного кода, а также сокращая его, поскольку отдельные фрагменты кода не нужно писать несколько раз.
Приведем пример пользовательской функции на PHP:
Сценарий выводит 100:
Пользовательским функциям в PHP можно передавать аргументы и получать возвращаемые функциями значения.
Подробную информацию по пользовательским функциям PHP вы найдете
Встроенные (стандартные) функции PHP
PHP содержит огромное колличество встроенных функций, способных выполнять задачи различного уровня сложности.
ООП и PHP
PHP имеет достаточно хорошую поддержку объектно-ориентированного программирования (ООП).
В PHP можно создавать классы различных уровней, объекты и достаточно гибко ими оперировать.
Вот пример PHP класса и его использования:
Пример #2
Определение констант с помощью ключевого слова const
Замечание:
В отличие от определения констант с помощью функции define()
, константы, объявленные с помощью ключевого слова const должны быть объявлены в самой верхней области видимости, потому что они определяются при компилировании скрипта. Это означает, что их нельзя объявлять внутри функций, циклов, выражений if и try/ catch
блоков.
Создайте файл с именем hello.php в корневом каталоге ваших документов Web-сервера и запишите в него следующее:
Пример 2-1. Первый скрипт на PHP: hello.php
Тестируем PHP
Эта программа выведет следующее:
Тестируем PHP
Привет!
Заметим, что сходства со скриптами на CGI нет. Файл не обязан быть выполнимым или отмеченным любым другим образом. Это просто обычный файл HTML, в котором есть набор специальных тегов, делающих много интересного.
Эта программа чрезвычайно проста, и для создания настолько простой странички даже необязательно использовать PHP. Все что она делает - это выводит «Привет! с использованием функции PHP echo().
Если у вас этот пример не отображает ничего или выводит окно загрузки, или если вы видите весь этот файл в текстовом виде, то весьма вероятно, что ваш Web-сервер не имеет поддержки PHP. Попросите вашего администратора сервера включить такую поддержку. Предложите ему инструкцию по установке - раздел «Установка» данной документации. Если же вы хотите разрабатывать скрипты на PHP дома, то вам в раздел необходимые файлы. Дома можно разрабатывать скрипты с использованием любой операционной системы, но вам понадобится установить соответствующий Web-сервер.
Цель примера - показать формат специальных тегов PHP. В этом примере мы использовали . Таким образом можно сколько угодно раз переходить к коду PHP в файле HTML.
Существует множество текстовых редакторов и интегрированных сред разработки (IDE) , в которых вы можете создавать и редактировать файлы PHP.
Текстовые процессоры (Star Office Writer, Microsoft Word, Abiword и др.) в большинстве случаев не подходят для редактирования файлов PHP. Если вы используете текстовый процессор для создания скриптов на PHP, вы должны быть уверены, что сохраняете файл, как ЧИСТО ТЕКСТОВЫЙ. В противном случае PHP не сможет обработать и выполнить вашу программу.
При написании скриптов PHP с использованием встроенного «Блокнота» Windows
необходимо сохранять файлы с расширением.php. «Блокнот» автоматически добавляет расширение.txt. Для обхода этой проблемы существует несколько методов.
Можно поместить название файла в кавычки (пример: hello.php).
Кроме того, можно выбрать «Все файлы» вместо «Текстовые документы» из ниспадающего списка с типами файлов в окне сохранения. После этого можно вводить имя файла без кавычек.
При объявлении переменных в РНР не требуется явно указывать тип переменной, при этом одна и та же переменная может иметь на протяжении программы разные типы.
Переменная инициализируется в момент присваивания ей значения и существует до тех пор, пока выполняется программа. Т.е., в случае web-страницы это означает, что до тех пор, пока не завершен запрос.
Oбласть видимости переменыхОбласть действия переменной - это контекст, в котором она определена. Большая часть переменных PHP имеет одну область действия. Она охватывает также включенные (included) и необходимые (required) файлы. Например:
$a = 1;
include "b.inc";
Здесь переменная $a будет доступна во включенном скрипте b.inc. Однако в определенных пользователем функциях вводится локальная область действия в пределах функции. Любая переменная, используемая в функции, по умолчанию ограничена локальной областью действия функции. Например:
$a = 1; /* глобальная область действия */
Function Test () {
echo $a; /* ссылка на локальную переменную */
}
Test ();
Этот скрипт ничего не выведет, потому что выржение echo ссылается на локальную версию переменной $a, которой в этой области действия не присвоено значение. Это отличается от языка C, вв котором глобальные переменные C автоматически становятся доступны функциям, если только они специально не переопределены локально. Это может вызвать проблемы, поскольку программист может непреднамеренно изменить глобальную переменную. В PHP глобальные переменные, если они будут использоваться в функции, должны объявляться в этой функции. Вот пример:
$a = 1;
$b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;
Этот скрипт выведет цифру 3. Путем объявления $a и $b глобальными в функции все ссылки на любую из этих переменных будут ссылаться на глобальную версию. число глобальных переменных, которыми может манипулировать функция, не ограничено.
Второй способ получить доступ к глобальным переменным - использовать специальныый определенный PHP массив $GLOBALS. Предыдущие пример можно переписать следующим образом:
$a = 1;
$b = 2;
Function Sum () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum ();
echo $b;
массив $GLOBALS
Массив $GLOBALS - это ассоциативным массив, индексами в котором служат имена, а значениями элементов - значения соответствующих глобальных переменных.
Другая важная особенонсть областей действия переменных - статические переменные. Статическая переменная существует только в локальной функции, но не теряет значения после выхода программы из области действия функции. Расмотрим следующий пример:
Function Test () {
$a = 0;
echo $a;
$a++;
}
Эта функция достаточно бесполезна, поскольку каждый раз при вызове она устанавливает значение $a равным 0 и выводит на печать 0. Выражение $a++, увеличивающее значение переменной, ничего не делает, поскольку, как только выполнение функции закончено, переменная $a исчезает. Чтобы создать полезную функцию-счетчик, не теряющую значений, объявим переменную $a как static:
Function Test () {
static $a = 0;
echo $a;
$a++;
}
Теперь при каждом вызове функции Test() она будет выдавать на печать значение переменной $a и увеличивать его.
Кроме того, статические переменные помогают в работе с рекурсивными функциями. Рекурсивной называется функция, которая вызывает сама себя. К написанию рекурсивных функций следует подходить осторожно, поскольку можно сделать цикл бесконечным. Необходимо создать способ прерывания рекурсии. Следующая простая функция ведет счет до 10 с помощью статической переменной $count и останавливает рекурсию:
Function Test () {
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test ();
}
$count--;
}
типы переменных
Как уже было сказано, PHP предоставляет определенную гибкость в отношении типов переменных, т.е. с одной и той же переменной на протяжении программы можно работать и как со строкой, и как с числом. Однако, несмотря на это в РНР существуют набор основных типов данных, которые могут явно указываться при работе с переменными:
- integer;
- string;
- boolean;
- double;
- array;
- object;
Целые
Целые числа задаются с использованием следующего синтаксиса:
$a = 1234; # десятичное число
$a = -123; # отрицательное число
$a = 0123; # восьмеричное число (эквивалнетно десятичному 83)
$a = 0123; # шестнадцатеричное число (эквивалнетно десятичному 18)
Размер целого цисла зависит от платформы, обычно максимлаьным может быть знаечение около 2 миллиардов (32 бита со знаком).
Есть функция gettype(), возвращающая тип, который РНР назначил переменной:
В первом случае РНР вернет string, во втором integer.
Числа с плавающей точкой
Числа с плавающей точкой («числа двойной точности») задаются с использованием следующего синтаксиса:
$a = 1.234; $a = 1.2e3;
Размер числа с плавающей точкой зависит от платформы, обычно максимальным может быть число 1.8e308 с точностью около 14 десятичных цифр (64-битный формат IEEE).
Внимание
Обычно простые десятичные дроби типа 0.1 или 0.7 преборазуются в числа двойной точности с некоторой потерей точности. Это может привести к странным результатам: например, функция floor((0.1+0.7)*10) вернет значение 7 вместо ожидаемого 8, потому что результатом внутреннего представления будет число типа 7.9999999999....
Это объясняется тем фактом. что некоторые дроби невозможно точно выразить в десятичной записи с ограниченным числом знаков. Например, 1/3 в десятичной записи принимает вид 0.3333333. . ..
Поэтому никогда н едоверяйте результатам вычислений с плавающей точкой до последней цифры и никогда не проверяйте равенство чисел с плавающей точкой. Если Вам действительон нужна более высокая точность, используйте математические функции с произвольной точностью или функции gmp.
Строки
Строки могут задаваться с использованием одного или двух наборов разделителей.
Если строка заключена в двойные кавычки ("), переменные в строке будут раскрываться (в соответствии с некоторыми ограничениями синтаксического разбора). Как и в C и Perl, при указании специальных символов может использоваться обратный слеш ("\"):
Таблица 6-1 . Символы, кодируемые с использованием обратного слеша
Последовательность | Значение |
\n | перевод строки (LF или 0x0A в кодировке ASCII) |
\r | возврат каретки (CR или 0x0D в кодировке ASCII) |
\t | горизонтальная табуляция (HT или 0x09 в кодировке ASCII) |
\\ | обратный слеш |
\$ | знак доллара |
\" | двойная кавычка |
\{1,3} | последовательность символов, соответствующая регулярному выражению, является символом в восьмеричной нотации |
\x{1,2} | последовательность символов, соответствующая регулярному выражению, является символом в шестнадцатеричной нотации |
Если Вы попытаетесь представить таким образом другой символ, выведены будут и обратный слеш, и сам символ. В PHP 3 при этом будет выдано предупреждение на уровне E_NOTICE. В PHP 4 предупреждающее сообщение не генерируется.
Второй способ отделения строк - использование одиночных кавычек ("""). Если строка заключается в одинарные кавычки, в ней можно использовать только символы "\\" и "\"". Таикм образом Вы смоежет указывать одинарные кавычки и обратные слеши в строка, отделенной одинарными кавычками. Переменные в строке, отделенной одинарными кавычкамИ, разворачиваться не будут.
Еще один способ разделения строк - с помощью синтаксиса документов ("