≪
≫

Синтаксические конструкции и переменные

Синтаксис РНР довольно простой. Скрипты на РНР встраиваются в текст web-страницы так же, как и сценарии на JavaScript, VBScript. Идентификация кода РНР называется «переходом в РНР» (escaping to РНР). Существуют четыре варианта оформления перехода в РНР:

  • - стандартные теги;
  • - короткие теги;
  • - теги script;
  • — теги в стиле ASP (Active Server Page).
  • 1. Стандартные теги.

Используются программистами РНР чаще остальных способов, что объясняется наглядностью и удобством этой формы записи:

?php echo «Welcome to the world of PHP!»; ?.

У стандартных тегов есть еще одно дополнительное преимущество: за открывающей конструкцией php, однозначно определяющие тип дальнейшего кода. Это удобно при использовании в одной странице нескольких технологий — таких, как JavaScript, серверные включения и РНР. Весь текст, расположенный до закрывающего тега ?>, интерпретируется как код РНР.

Если файл содержит только код РНР, предпочтительно опустить закрывающий тег в конце файла. Это помогает избежать добавления случайных символов пробела или перевода строки после закрывающего тега РНР, которые могут послужить причиной нежелательных эффектов.

2. Короткие теги.

Обеспечивают наиболее компактную запись для перехода в РНР:

echo «Welcome to the world of PHP!»; .

Использовать их нежелательно, так как они доступны только если включены (по умолчанию отключены). Это можно сделать двумя способами:

  • — указать ключ -enable-short-tags при компиляции РНР;
  • — с помощью конфигурационной директивы short_open_ tag в файл php.ini.

3. Теги script

Некоторые текстовые редакторы ошибочно принимают код РНР за код HTML (т. е. визуально отображаемый текст), что нарушает работу над web-страницей. Проблема решается использованием тегов script:

script language = «php»

?php echo «Welcome to the world of PHP!»; ?

/script.

4. Теги в стиле ASP

Похожи на короткие теги, описанные выше, однако вместо вопросительного знака используется знак «%»:

%php echo «Welcome to the world of PHP!»; %>.

Команды PHP обязательно разделяются символом «;» (символ конца абзаца или конца строки не учитывается никак), после последней в программе команды его можно не ставить. Также символ «;» не ставится после условных операторов (IF, SWITCH) и операторов цикла (FOR, WHILE и др.). Пример программы на РНР представлен на рисунке 19.

Программа на PHP (выделена жирным) в тексте web-страницы

Рис. 19. Программа на PHP (выделена жирным) в тексте web-страницы

Комментарии следует использовать даже в относительно простых и незамысловатых сценариях. В РНР существуют два формата комментариев:

  • — однострочные — обычно используются для коротких пояснений или примечаний, относящихся к локальному коду;
  • — многострочные — при оформлении алгоритмов на псевдокоде и в более подробных объяснениях.

Оба способа в конечном счете приводят к одинаковому результату и совершенно не влияют на общее быстродействие сценария. Выбор варианта остается за пользователем.

/. Однострочные комментарии.

При оформлении используется два стиля комментирования. Оба работают абсолютно одинаково, но в них используются разные служебные символы. В одном случае комментарий начинается с символа «//», а в другом — с символа «#». Ниже приведены примеры обоих стилей:

?

// Выбрать цвет роз $rose_color = «red»;

# Выбрать цвет фиалок Sviolet color = «blue»; echo «Roses are $rose_color, violets are $violet_color»

?.

Оба стиля однострочных комментариев могут применяться для построения искусственных многострочных комментариев, как показано в следующем фрагменте текста программы (листинге):

?

// файл: example.php // автор: У. Дж. Гилмор // дата: 24 августа 2015 г. echo «Ап example with comments»;

  • ?.
  • 2. Многострочные комментарии.

В РНР существует возможность построения подробных комментариев, занимающих несколько строк. Такие комментарии оформляются в стиле языка С — их начало и конец обозначаются символами «/*» и «*/» соответственно:

?

/*

Сценарий: multi_coramment_example.php

Назначение: использование многострочных комментариев

Автор: У. Дж. Гилмор

Дата: 14 июня 2015 г.

7

echo «А multiline comment can be found at the top of this script!»;

?.

Как видно, многострочные комментарии особенно удобны для вывода относительно длинной сводной информации обо всем сценарии или его части.

Как и во всех языках программирования, в РНР есть возможность работать с переменными — некими объектами, имеющими имя и принимающими различные значения. Однако работа с переменными в РНР, пожалуй, самая легкая из всех возможных.

Для введения новой переменной достаточно просто присвоить ей какое-либо значение, а для помещения его в строку текста, имени файла или параметра команды нужно написать ее имя в том месте, где должно быть ее значение.

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

Чтобы РНР мог отличать переменные от строк или команд, имя переменной должно начинаться со знака «$» и не содержать пробелов, апострофов и некоторых других символов. При анализе программного кода интерпретатор РНР считает именем все, что содержится между «$» и ближайшим к нему символом, недопустимым в имени переменной. Ниже приведены примеры допустимых имен:

  • — $color;
  • - $operating_system;
  • - $_some_variable;
  • — $model.

В качестве имен переменных можно также использовать другие переменные — для этого другую переменную следует просто указать на месте имени первой: $$а.

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

В РНР поддерживаются шесть основных типов данных:

  • — целые числа;
  • — вещественные числа;
  • — строки;
  • — массивы;
  • — объекты;
  • — логические величины.

И два специальных типа данных:

  • — ресурсы;
  • — NULL (пустой тип).
  • 1. Целое число не имеет дробной части и представляется последовательностью из одной или нескольких цифр. В РНР поддерживается запись целых чисел в восьмеричной (по основанию 8) и шестнадцатеричной (по основанию 16) системах счисления.
  • 2. Вещественные числа отличаются от целых наличием дробной части (числа с плавающей точкой). Они используются для представления значений, требующих повышенной точности, например, температур или денежных величин. В РНР поддерживается два вещественных формата: стандартная (12.45, 98,6) и научная (экспоненциальная) запись (5.9736е24).
  • 3. Строкой (string) называется последовательность символов, которая рассматривается как единое целое, но при этом обеспечивает доступ к отдельным символам.

Примеры:

thesaurus;

49ers;

abc;

&%/$#.

Строки необходимо заключать в одинарные либо двойные кавычки. При использовании одинарных кавычек не допускаются управляющие последовательности, такие как г или п, они будут выведены как есть вместо какого-либо особого поведения. Такая же ситуация произойдет при попытке вывода значения переменной.

Пример:

Sname = [Василий]; echo [Привет, /п $пате].

В результате получим:

Привет, /п $name.

Использование двойных кавычек позволяет вводить управляющие последовательности и обрабатывает имена переменных, подставляя в результат значение этой переменной. Пример:

Sname = [Василий]; echo «Привет, /п Sname».

В результате получим:

Привет,

Василий.

В двойные кавычки можно заключать текст в одинарных и наоборот.

Замечание. В РНР не поддерживается символьный тип данных. Строковый тип может рассматриваться как единое представление для последовательностей, состоящих из одного или нескольких символов.

4. Массив — это совокупность под одним именем пронумерованных переменных. Имя каждой переменной в массиве состоит из имени этого массива и индекса переменной — нечто вроде номера переменной в массиве или ее имени в нем. Индекс переменной может быть цифровым или символьным, т. е. представлять собой либо номер переменной в массиве, либо ее имя в нем.

Пример: массив с числовыми индексами (нумерация индексов начинается с нуля, а не единицы!):

$а[0] = 100; $а[1] = 101; $а[2] = 102; с символьными индексами:

$а['first'| = 100; Sa[’second’| = 101; Sa['third'| = 102;

Массив с числовыми индексами называется еще «скалярным», а с символьными — «ассоциативным».

Зачем нужны массивы? Для того чтобы можно было к ним обращаться как к чему-то целому, тем самым получая возможность совершать автоматические действия со всеми элементами массива или с их частью, не указывая имени каждого элемента.

Иными словами, скажем, в какие-то переменные записаны имена клиентов и теперь необходимо их вывести. Сделать это можно, только перебрав все переменные, для чего понадобятся их имена, которые придется жестко задать в программе. Если заранее не известно, сколько будет клиентов, тогда необходимо их имена поместить в массив и «перебрать» специальной командой, добавить же новое имя тоже не трудно.

В PH Р добавлять элементы в массив можно, как явно указывая индекс элемента (например, $а[100] = «Андрей»;), так и просто упоминая, в какой массив этот элемент добавляется — $а[ ] = «Андрей»;. Во втором случае, добавляемый элемент становится последним в массиве.

По размерности массивы делятся на одномерные и многомерные.

5. Объект представляет собой переменную, экземпляр которой создается по специальному шаблону, называемому классом. Концепции объектов и классов являются неотъемлемой частью парадигмы объектно-ориентированного программирования (ООП).

В отличие от других типов данных, поддерживаемых в языке РНР, объекты должны объявляться явно. Необходимо понимать, что объект — всего лишь конкретный экземпляр класса, используемого в качестве шаблона для создания объектов с конкретными характеристиками и функциональными возможностями. Следовательно, объявление класса должно предшествовать объявлению объектов, создаваемых на их основе.

Пример: class appliance { var power:

functionset power ($on_off) {

$this— > power = $on_off;

}

}

$blender = new appliance;

Определение класса задает атрибуты и функции, связанные с некоторой структурой данных, — в данном примере это структура с именем «appliance» (устройство). У нее имеется всего один атрибут — «power» (мощность), для изменения которого создается метод set_power.

Следует помнить, что определение класса — всего лишь шаблон и выполнять операции с ним в программе невозможно. Сначала нужно создать объекты на основе этого шаблона. Объекты создаются при помощи ключевого слова new. Например, в приведенном выше фрагменте создается объект $blender класса appliance. Затем можно задать его мощность при помощи метода set_power:

$blender— > set_power(«on»);

6. Логический тип данных принимает всего два значения: истинное (true) и ложное (false). Логические величины создаются двумя способами: при проверке условий и в виде значений переменных.

Интерпретатор РНР автоматически определяет тип переменной на основании анализа ее содержимого. Рассмотрим следующий пример:

$sentence = «This is asentence.»; // Ssentence интерпретируется как строка

Sprice = 42.99; // $price интерпретируется как вещественное число

$ weight = 185; // $ weight интерпретируется как целое число

Для включения числовой или строковой переменной в строку текста достаточно просто поместить переменную туда, где она должна стоять в этой строке. Например, в итоге выполнения кода $а = «птица певчая»; $Ь = «Дятел — $а»; переменной $Ь будет присвоено значение «Дятел — птица певчая».

Следует помнить, что в РНР нельзя для сложения строковых переменных использовать символ «+» — он пригоден лишь для числовых выражений. Поэтому необходимо помещать переменные в строки или использовать команду конкатенации (точку): $с = $а. $Ь.

Довольно часто используются сокращенные обозначения арифметических действий над переменными и действий по присваиванию им каких-либо значений. Например, команда $а+ = 3 означает, что переменную $а надо увеличить на 3, что и будет сделано, если она имеет числовой формат. Точно так же команда $а— = 3 уменьшает переменную $а на 3, а команды $а* = 2 и $а/ = 2 соответственно умножают и делят на два переменную $а. Команда $а. = «строка» эквивалентна команде $а = «$а строка».

В РНР применяются также операции инкремента и декремента, т. е. изменения значения переменной на 1. Так, команды $а++ и $а— соответственно увеличивают и уменьшают значение переменной $а на единицу. То же самое делают и команды ++$а, —$а, однако, в том случае, если подобная команда используется в выражении, они, в отличие от предыдущих, сначала изменяют значение переменной, а потом выдают его в выражение. Иными словами, если переменная $а равна 2, то после выполнения команды $Ь = $а++; ее значение достигнет 3, а $Ь будет установлена в 2. В то же время команда $Ь = ++$а; установит обе переменные в 3.

Область видимости (scope) определяется как область доступности переменной в той программе, в которой она была объявлена. В зависимости от области видимости переменные РНР делятся на четыре типа:

  • - локальные;
  • — глобальные;
  • — статические;
  • - суперглобальные.
  • 1. Локальные переменные.

Переменная, объявленная внутри функции, считается локальной; другими словами, на нее можно ссылаться только в этой функции. При любом присваивании вне функции будет использоваться совершенно другая переменная, которая не имеет ничего общего (кроме имени) с переменной, объявленной внутри функции. При выходе из функции, в которой была объявлена локальная переменная, эта переменная и ее значение уничтожаются.

Пример:

?php

/* глобальная область видимости */

$age = 30; // присвоить переменной age значение 30 function birth() {

// присвоить переменной age значение 1

$age = 1; // это локальная переменная — она видна только внутри функции }

// Вызов функции birth();

// выводим значение переменной age echo $age; // => 30 ?>.

2. Глобальные переменные.

Глобальные переменные, в отличие от локальных, доступны в любой точке программы. Но чтобы изменить значение глобальной переменной, необходимо специально объявить ее как глобальную в соответствующей функции. Для этого перед ее именем ставится ключевое слово global.

Пример:

?php

$age = 30; // присвоим переменной age значение 30 // определяем функцию function birth() {

global Sage; // определить переменную как глобальную Sage = Sage + 1; // увеличиваем значение переменной age

на 1

}

birth(); // вызываем функцию // выводим значение переменной age echo Sage; // => 31 ?>.

3. Статистические переменные.

В отличие от переменных, объявленных параметрами и уничтожаемых при выходе из функции, статическая переменная сохраняет свое значение при повторном вызове. Для объявления перед ее именем ставится ключевое слово static. Пример:

?php

// определение функции function birth() {

static Sage = 0; // определяем переменную age как статическую

Sage = Sage + 1; // увеличиваем значение age на 1 echo «Значение статической переменной: $age »; // выводим на экран значение переменной }

// вызываем дважды функцию birth(); // => 1 birth(); // => 2

  • ?.
  • 4. Суперглобальные переменные.

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

Суперглобальными переменными являются:

  • - SGLOBALS;
  • - $ SERVER;
  • - S_GET;
  • - S POST;
  • - S F1LES;
  • - S COOKIE;
  • - S_SESSION;
  • - S REQUEST;
  • - $_ENV.

Все суперглобальные переменные являются массивами.

Средства управления, функции Управляющие конструкции

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

Управляющие конструкции обычно проверяют условия на истинность или ложность, и в зависимости от результата проверки выполняется то или иное действие. Рассмотрим выражение $а == $Ь. Это выражение истинно, если $а равно $Ь, и ложно в противном случае. Результат истинного выражения считается равным 1, а результат ложного выражения — 0. Рассмотрим следующий фрагмент:

$а - 5;

$Ь = 5;

echo $а == $Ь;

В результате выводится значение 1. Если изменить $а или $Ь и присвоить переменной значение, отличное от 5, выводится 0.

Команда if представляет собой разновидность команды выбора, которая вычисляет значение выражения и в зависимости от того, будет ли полученный результат истинным или ложным, выполняет (или не выполняет) блок программного кода. Существует две общих формы команды if:

1) if (выражение)

{

блок

};

2) if (выражение)

{

блок

}

else

{

блок

}

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

if ($cooking_weight < 200)

{

echo «This is enough pasta (< 200g) for 1-2 people»;

}

else

{

echo «That's a lot of pasta. Having a party perhaps?»;

}•

Если в результате проверки условия выполняется всего одна команда, фигурные скобки не обязательны: if ($cooking_weight < 100) echo «Are you sure this is enough?»;

Команда elseif добавляет в управляющую конструкцию if дополнительный уровень проверки и увеличивает количество условий, на основании которых принимается решение: if (выражение)

{

блок

}

elseif (выражение)

{

блок

}

В РНР существует альтернативное представление команды elseif - в виде двух отдельных слов: else, if. Оба варианта приводят к одинаковым результатам, а альтернативное представление поддерживается исключительно для удобства. Команда elseif особенно полезна в тех случаях, когда происходит последовательное уточнение проверяемых условий. Следует обратить внимание: условие elseif вычисляется лишь в том случае, если все предшествующие условия if и elseif оказались ложными.

if ($cooking_weight < 200)

{

echo «This is enough pasta (<200g) for 1—2 people»;

}

elseif ($cooking_weight < 500)

{

echo «That's a lot of pasta. Having a party perhaps?»;

}

else

{

echo «Whoa! Who are you cooking for, a football team?»;

}•

Вычисление нескольких условий

При выборе логики работы программы в управляющей структуре можно проверять комбинацию сразу нескольких условий:

if (($cooking_weight > 0) && ($cooking_weight < 200))

{

echo «This is enough pasta (< 200g) for 1—2 people»;

}•

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

Конструкция while предназначена для многократного (циклического) выполнения блока команд. Блок команды while выполняется до тех пор, пока условие цикла остается истинным. Общая форма цикла выглядит так: while (выражение)

{

блок инструкций

};

Пример: рассмотрим использование цикла while на примере вычисления факториала (п!), где п = 5:

$п = 5;

$псору = $п;

Sfactorial = 1; // Установить начальное значение факториала while ($п > 0)

{

Sfactorial - $n * Sfactorial;

$п—; // Уменьшить $п на 1

};

echo «The factorial of $n copy is Sfactorial.»;

Программа выводит следующий результат:

The factorial of 5 is 120.

В этом примере $п уменьшается в конце каждой итерации. Условие цикла не должно быть истинным в тот момент, когда переменная $п станет равна 0, поскольку величина $factorial умножится на 0 — конечно, этого быть не должно.

Цикл do ... while работает почти так же, как и цикл while, однако здесь условие проверяется не в начале, а в конце каждой итерации. Следует учитывать, что цикл do ... while всегда выполняется хотя бы один раз, а цикл while может вообще не выполняться, если перед входом в цикл условие окажется ложным: do {

блок инструкций

}

while (выражение);

Рассмотрим пример с вычислением факториала и перепишем его с использованием конструкции do ... while:

$n = 5:

$ncopy = $n;

$factorial = 1; // Установить начальное значение факториала do {

$factorial = $n * $factorial;

$n—: // Уменьшить $n на 1

}

while ($n > 0);

echo «The factorial of $ncopy is $factorial.»;

При выполнении этого примера будет получен тот же результат, что и выше.

В цикле do ... while не поддерживается альтернативный синтаксис (ограничение блоков при помощи «:» и завершающего ключевого слова), поэтому блок может заключаться только в фигурные скобки.

Цикл for обеспечивает еще одну возможность многократного выполнения блоков. Он отличается от цикла while только тем, что условие изменяется в самой управляющей конструкции, а не где-то внутри блока команд. Как и в случае с циклом while, цикл выполняется до тех пор, пока проверяемое условие остается истинным. Общая форма конструкции for выглядит так:

for (инициализация; условие; приращение)

{

блок инструкций

}

Условная часть цикла for в действительности состоит из трех компонентов. Инициализация выполняется всего один раз и определяет начальное значение управляющей переменной цикла. Условие проверяется в начале каждой итерации и определяет, должна ли выполняться текущая итерация или нет. Наконец, приращение определяет изменение управляющей переменной при каждой итерации. Возможно, термин «приращение» в данном случае неточен, поскольку переменная может как увеличиваться, так и уменьшаться в соответствии с намерениями программиста.

Любой компонент может отсутствовать либо состоять из более чем одной инструкции.

Следующий пример демонстрирует простейший случай применения цикла for (обратная косая черта предотвращает возможную интерполяцию переменной $i): for ($i = 10; $i < -50; $i+ = 10)

{

echo «$i = $i »;

}•

Выполнение этого фрагмента дает следующий результат:

$i = 10

$i = 20

Si = 30

$i = 40

$i = 50.

В этом примере управляющая переменная Si инициализируется значением 10. Условие заключается в том, что цикл продолжается до тех пор, пока Si не достигнет или не превысит пороговую величину 100. Наконец, при каждой итерации значение Si увеличивается на 10. В результате команда echo выполняется 10 раз, каждый раз выводя текущее значение $i. Следует обратить внимание: для увеличения $i на 10 используется оператор сложения с присваиванием. Для этого есть веские причины, поскольку циклы for в РНР не поддерживают более традиционной записи $i = $i + 10.

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

Хотя циклические конструкции for и while выполняют практически одинаковые функции, считается, что цикл for делает программу более наглядной. Это объясняется тем, что программист при виде команды for немедленно получает всю необходимую информацию о механике и продолжительности цикла. С другой стороны, в командах while приходится тратить лишнее время на поиск обновлений управляющих переменных — в больших программах это может занимать немало времени.

Конструкция foreach представляет собой разновидность for, включенную в язык для упрощения перебора элементов массива. Foreach работает только с массивами и объектами и будет генерировать ошибку при попытке использования с переменными других типов или неинициализированными переменными.

Существуют две разновидности команды foreach, предназначенные для разных типов массивов:

1) foreach (массив as $элемент)

{

блок

};

2) foreach (массив as $ключ => $элемент)

{

блок

}•

Пример: при выполнении следующего фрагмента:

$menu = array («pasta», «steak», «potatoes», «fish», «fries»); foreach (Smenu as $item)

{

echo «$item
»;

}

будет выведен следующий результат:

pasta

steak

potatoes

fish

fries.

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

Принцип работы конструкции switch отчасти напоминает if — результат, полученный при вычислении выражения, проверяется по списку потенциальных совпадений.

Это особенно удобно при проверке нескольких значений, поскольку применение switch делает программу более наглядной и компактной. Общий формат команды switch: switch (выражение)

{

case (условие): блок break; case (условие): блок break;

default:

блок

}•

Проверяемое условие указывается в круглых скобках после ключевого слова switch. Результат его вычисления последовательно сравнивается с условиями в секциях case. При обнаружении совпадения выполняется блок соответствующей секции. Если совпадение не будет обнаружено, выполняется блок необязательной секции default.

Необходимо помнить, что при отсутствии в секции case команды break выполнение switch продолжается со следующей команды до тех пор, пока не встретится команда break или не будет достигнут конец конструкции switch.

Команда break немедленно прерывает выполнение той конструкции while, for или switch, в которой она находится. Эта команда уже упоминалась выше, однако прерывание текущего цикла не исчерпывает ее возможностей. В общем виде синтаксис break выглядит так: break п;.

При выполнении команды continue в цикле пропускаются все оставшиеся команды текущей итерации и немедленно начинается новая итерация. Синтаксис команды continue в общем виде: continue п;.

Необязательный параметр п указывает, на сколько уровней внешних циклов распространяется действие continue.

Функции

Функцией называется фрагмент программного кода, обладающий уникальным именем и предназначенный для решения конкретной задачи. Функция вызывается по имени в разных точках программы, что позволяет многократно выполнять фрагмент с указанным именем. Преимущество такого решения заключается в том, что блок кода пишется всего один раз, а затем легко модифицируется по мере необходимости.

Определить новую функцию в РНР несложно. Они могут создаваться в любой точке программ РНР, однако по соображениям структурной организации кода удобнее разместить все функции, используемые сценарием, в самом начале сценарного файла. Существует и другой способ, заметно повышающий эффективность программирования и способствующий многократному использованию кода, — выделение функций в отдельный файл (называемый библиотекой). Библиотеки удобны тем, что их функции можно использовать в разных приложениях, не создавая лишних копий и не рискуя допустить ошибки в процессе копирования.

Определение функции обычно состоит из трех частей:

  • — имени функции;
  • — круглых скобок, в которых перечисляются необязательные входные параметры, разделенные запятыми;
  • — тела функции, заключенного в фигурные скобки.

Обобщенный синтаксис функций РНР выглядит так:

Function имя функции ([$параметр1, $параметр2, ... $па-

раметрп])

{

тело функции

}•

Имя функции должно подчиняться условиям идентификаторов. После него следуют обязательные круглые скобки, в которые заключается необязательный список входных параметров ($параметр1, $параметр2, ... $параметрп). Вследствие относительно либеральных принципов определения переменных в РНР указывать тип входных параметров не нужно. Хотя такой подход имеет свои преимущества, следует помнить, что механизм РНР не проверяет аргументы на соответствие тем типам, которые должны обрабатываться функцией. Случайные ошибки в использовании входных параметров могут привести к неожиданным последствиям (чтобы убедиться в том, что параметр относится к нужному типу, можно проверить его стандартной функцией gettype()). После закрывающей круглой скобки следуют фигурные скобки, в которые заключается программный код, ассоциируемый с именем функции.

Функции можно вызывать внутри других функций — по аналогии с тем, как одна управляющая конструкция (if, while, for и т. д.) может находиться внутри другой. Такая возможность удобна в любых программах, и в больших, и в малых, поскольку она увеличивает степень модульности приложения и упрощает сопровождение программы.

По завершении работы функции часто бывает полезно вернуть некоторое значение, для чего результат вызова функции обычно присваивается некоторой переменной. Функции могут возвращать значения любых типов, в том числе массивы и списки.

Функции, не возвращающие значений, также называются процедурами.

  • Ш ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
  • 1. Перечислите особенности языка программирования РНР.
  • 2. Перечислите категории средств web-разработчика.
  • 3. Назовите варианты оформления перехода в РНР.
  • 4. Назовите форматы комментариев в РНР.
  • 5. Перечислите типы данных, используемые в РНР.
  • 6. Перечислите команды для проверки условий.
  • 7. Перечислите команды для задания цикла.
  • 8. Дайте определение функции в РНР и назовите части, из которых она состоит.
 
Посмотреть оригинал