Основной синтаксис PHP. Основы PHP — Функции PHP. Синтаксис и примеры использования функций PHP Переменные в PHP

Рассмотрим несколько основных и чаще всего встречающихся элементов, чтобы в дальнейшем не смотреть на набор символов и не гадать, что это такое, для чего нужно, и как работает.

А в следующем уроке уже начнём писать скрипты и смотреть что из этого получится.

Пример 1. Простой скрипт вывода на экран монитора.

Первое что бросается в глаза — это:

— открывающий и закрывающий теги, или маркеры PHP. Они всегда присутствуют в начале и конце кода.

PHP поддерживает несколько вариантов открывающих и закрывающих тегов.

— полный (классический) вариант начального и конечного тегов, рекомендуется к постоянному использованию.

— сокращённый вариант, работает при включённой директиве short_open_tag (включена по умолчанию). Это встроенная в php директива, которая определяет разрешена ли короткая запись тегов php.

Однако лучше применять классический вариант, особенно при совместной работе с XML-кодом, во избежание неоднозначности в интерпретации.

…….. — расширенный вариант, доступен в любой момент без дополнительных настроек (встречается редко)

— специальный вид для вывода простого выражения, является по сути сокращённым вариантом от , удобен при написании скрипта состоящего из одного выражения, работает при включённой директиве short_open_tag.

Любой php код всегда начинается и заканчивается этими тегами. Всё что находится внутри них, называется скрипт, или сценарий, или программа.

error_reporting (- 1 ) — инструкция, включает показ всех предупреждений об ошибках, в написанном Вами, скрипте. Во время обучения желательно использовать постоянно.

echo — инструкция выводящая на экран монитора то, что в ней написано. Это может быть текст, числа, разметку html, то есть всего, что есть на веб странице.

Текст обязательно заключается в кавычки, а числа могут быть в виде действий, и на мониторе будет показан результат этого действия. Вот уже и калькулятор!

+ — сложение
— — вычитание
* — умножение
/ — деление
% — остаток при делении
— перед строкой — отрицание

называются арифметическими операторами php. Есть ещё много различных операторов. Это и строковые, и логические, и операторы присвоения, и ещё несколько видов операторов, но о всех них немного погодя.

Каждое выражение заканчивается точкой с запятой.

Пример 2. Переменные и константы.

$var и $vAr — переменные

Переменные — это хранилища информации. Вся информация, которую Вы заложите в программу, храниться в переменных. Начинаются они всегда знаком доллара, а название даёт программист, то есть Вы.

Название переменной может состоять из любого количества букв, цифр и знаков подчёркивания, но начинаться с цифры не может. Имена переменных чувствительны к регистру. Одно и тоже слово написанное прописными и заглавными буквами будет восприниматься как два разных имени.

Начинается имя всегда с маленькой буквы. Количество переменных в скрипте не ограничено.

= — оператор присвоения

define (" I" ,1000 ,true ); — константа

" I" — название константы
1000 — значение константы
true — учитывается регистр букв, если вместо него поставить false, то регистр учитываться не будет.

Константа, в php, всегда определяется функцией define(), и в ней хранятся данные, которые ни в коем случае не меняются во время работы программы. Название константы всегда пишется заглавными буквами.

Пример 3. Комментарии.

Считается хорошим тоном снабжать скрипты подробными комментариями.

После знаков // и # браузер игнорирует всё, что находится до конца строки.

Пример 4. Функция.

function — функция, обрабатывает определённое количество действий, направленных на получение конкретного результата.

arr_max — название функции
($arr ) — аргументы (входящие данные) функции

Всего функций в php более 4000, но так как все они разбиты по категориям, то отыскать в справочнике нужную, большого труда не составляет.

Пример 5. Управляющие конструкции.

Конструкции применяются для управления пошаговым исполнением кода.

$flag1 , $flag2 , $flag3 — переменные
if и else — условные операторы, то есть проверяющие условие — ложь или истина.
&& — логический оператор, читается как соединительный союз «и».
|| — логический оператор, читается как разделительный союз «или»
echo — инструкция вывод на экран

Вот теперь мы будем знать хотя бы несколько основных названий, и назначений элементов скрипта. Вообще-то в php их ещё предостаточно, и в дальнейшем, как в теории так и на практике, мы их подробно рассмотрим.


Перемена

-Абрам, ты знаешь к нам приезжает Эйнштейн.
-А что это за фраер?
-Это тот самый фраер, что изобрел теорию относительности.
-Ради бога. Я не знаю теорию относительности.
-Как ты не знаешь теорию относительности? Я объясню.
Вырываем у тебя три волосины — это много?
-Нет.
-Бросаем тебе в суп — это много?
-Да.
-Понял?
-Нет.
-Объясняю для понял. Суешь мне нос в жопу. У тебя нос В жопе, у меня нос в жопе. Выражение одно — ощущения разные! Понял?
-И что… он хочет с этой хохмой ехать к нам в Одессу?

Вы можете определить константу с помощью функции define() или с помощью ключевого слова const вне объявления класса начиная с версии PHP 5.3.0 . После того, как константа определена, ее значение не может быть изменено или аннулировано.

До PHP 5.6 константы могут содержать только скалярные данные (boolean , integer , float и string типов). С PHP 5.6 возможно также определять константы как скалярные выражения, и также можно определять константы с типом array . Можно определять константы с типом resource, но не рекомендуется, так как может привести к неожиданным результатам.

Получить значение константы можно, указав ее имя. В отличие от переменных, вам не нужно предварять имя константы символом $ . Также вы можете использовать функцию constant() для получения значения константы, если вы формируете имя константы динамически. Используйте функцию get_defined_constants() для получения списка всех объявленных констант.

Замечание:
Константы и (глобальные) переменные находятся в разных пространствах имен. Это означает, что, например, TRUE и $TRUE являются совершенно разными вещами.

Если вы используете неопределенную константу, PHP предполагает, что вы имеете ввиду само имя константы, как если бы вы указали литерал типа string (CONSTANT вместо "CONSTANT "). При этом будет сгенерирована ошибка уровня E_NOTICE . Смотрите также главу руководства, которая разъясняет, почему $foo - это неправильно (конечно, если вы перед этим не объявили bar как константу с помощью define() ). Если вы просто хотите проверить, определена ли константа, используйте функцию defined() .

Различия между константами и переменными:
У констант нет приставки в виде знака доллара ($ );
До PHP 5.3 константы можно определить только с помощью функции define() , а не присваиванием значения;
Константы могут быть определены и доступны в любом месте без учета области видимости;
Константы не могут быть переопределены или аннулированы после первоначального объявления; и
Константы могут иметь только скалярные значения, или скалярные и массивы в PHP 5.6 и новее. Вы можете использовать массивы в скалярных выражениях констант (например, const FOO = array(1,2,3); ), но результатом должно быть скалярное выражение.

Пример #1 Определение констант

Пример #2 Определение констант с помощью ключевого слова const

Замечание:
В отличие от определения констант с помощью функции define() , константы, объявленные с помощью ключевого слова const должны быть объявлены в самой верхней области видимости, потому что они определяются при компилировании скрипта. Это означает, что их нельзя объявлять внутри функций, циклов, выражений if и try/ catch блоков.

Простая PHP-страница (Hello)

Создайте файл с именем 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 предупреждающее сообщение не генерируется.
Второй способ отделения строк - использование одиночных кавычек ("""). Если строка заключается в одинарные кавычки, в ней можно использовать только символы "\\" и "\"". Таикм образом Вы смоежет указывать одинарные кавычки и обратные слеши в строка, отделенной одинарными кавычками. Переменные в строке, отделенной одинарными кавычкамИ, разворачиваться не будут.
Еще один способ разделения строк - с помощью синтаксиса документов ("