Перейти к основному содержимому

Встроенные функции PHP

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


Пользовательские функции PHP

Вы не ограничены тем, что предоставляет PHP: можно также писать собственные функции.

  • Функцию можно представить как группу инструкций, которую можно повторно использовать во всей программе.
  • Загрузка страницы сама по себе её не запускает.
  • Её код выполняется, только когда вы её вызываете.

Создание функции

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

Код функции помещается в пару фигурных скобок: { отмечает его начало, а } — конец.

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

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

Синтаксис функции

Общий вид функции, которую вы определяете сами:

index.php
function functionName($parameter1, $parameter2) {
  // code to be executed
  return $value; // optional
}

Пример создания функции

А вот настоящая функция с именем myMessage(), которая выводит приветствие:

index.php
function myMessage() {
  echo "Hello world!";
}

Вызов функции

Для вызова функции нужны лишь её имя и пара круглых скобок ().

При вызове эта функция выводит «Привет, мир!»:

Вызов функции

Сначала определите myMessage(), а затем запустите её, вызвав:

Prompt
Напишите PHP-скрипт, который определяет функцию с именем myMessage, выводящую «Привет, мир!», а затем вызывает эту функцию.
Вывод: PHP-скрипт

Параметры функций PHP

С помощью параметров вы передаёте информацию в функцию. Внутри функции параметр ведёт себя точно так же, как переменная.

Перечислите их в скобках после имени функции через запятую. Ограничений на их количество нет.

Функция с одним параметром

familyName() принимает один параметр, $fname. В каждом вызове передаётся другое имя, которое функция соединяет с одной и той же фамилией, поэтому в каждой строке вывода показано новое имя, а после него «Refsnes»:

Prompt
Напишите PHP-скрипт, который определяет функцию с именем familyName с одним параметром для имени и выводит имя, за которым следует «Refsnes.», для пяти разных имён.
Вывод: PHP-скрипт

Функция с двумя параметрами

Этот вариант принимает два параметра, $fname и $year, и выводит оба:

Prompt
Напишите PHP-скрипт, который определяет функцию с именем familyName с двумя параметрами — именем и годом рождения — и выводит сообщение с обоими значениями для трёх разных людей.
Вывод: PHP-скрипт

Значение параметра по умолчанию в PHP

У параметра может быть запасное значение. Здесь при вызове setHeight() без аргумента используется значение по умолчанию:

Значение параметра по умолчанию

Первый вызов передаёт 350, а второй ничего не передаёт, поэтому $height принимает запасное значение 50:

Prompt
Напишите PHP-скрипт, который определяет функцию с именем setHeight со значением параметра по умолчанию 50, а затем вызывает её с аргументом и без него.
Вывод: PHP-скрипт

Функции PHP — возврат значений

Когда функция доходит до return, она сразу останавливается и отправляет значение обратно в строку кода, которая её вызвала:

Возврат значений

sum() складывает два своих аргумента и возвращает сумму вызывающему коду:

Prompt
Напишите PHP-скрипт, который определяет функцию с именем sum, принимающую два числа, возвращающую их сумму, и демонстрирует её работу на трёх разных парах чисел.
Вывод: PHP-скрипт

Передача аргументов по ссылке

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

При передаче по ссылке копии нет, то есть всё, что функция делает с аргументом, происходит и с исходной переменной. Для этого поставьте оператор & перед параметром:

Передача по ссылке

Поскольку $value является ссылкой, add_five() изменяет саму переменную $num с 2 на 7:

Prompt
Напишите PHP-скрипт, который определяет функцию с именем add_five, принимающую параметр по ссылке и добавляющую к нему 5, а затем выводит обновлённое значение.
Вывод: PHP-скрипт

Переменное число параметров

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

Все значения, собранные этим параметром, поступают в виде массива.

Правил два: у функции может быть только один параметр переменной длины, и он должен стоять последним. Если поместить его в другое место, PHP сообщит об ошибке.

Функция с переменным числом параметров

sumMyNumbers() складывает столько чисел, сколько ей передано, в данном случае шесть:

Prompt
Напишите PHP-скрипт, который определяет функцию с переменным числом параметров с именем sumMyNumbers, принимающую любое количество аргументов и возвращающую их сумму.
Вывод: PHP-скрипт

Аргумент переменной длины как последний аргумент

Обычный параметр может идти первым, если параметр переменной длины стоит на последнем месте:

Prompt
Напишите PHP-скрипт, который определяет функцию с именем myFamily с фиксированным параметром фамилии и параметром переменной длины для имён, а затем выводит приветствие для каждого члена семьи.
Вывод: PHP-скрипт

Ошибка, когда аргумент переменной длины не последний

Здесь ... стоит у первого из двух параметров, поэтому код завершается с ошибкой:

Prompt
Напишите PHP-скрипт, в котором переменное количество параметров ошибочно указано перед обычным параметром, чтобы показать возникающую ошибку.
Вывод: PHP-скрипт

PHP — язык со слабой типизацией

Возможно, вы заметили, что ни в одном из примеров до сих пор PHP не сообщалось, какой тип данных хранит переменная.

Дело в том, что PHP сам определяет тип по значению переменной. Когда типы не навязываются, можно, например, прибавить к целому числу числовую строку вроде «5», и ошибки не возникнет.

Объявления типов появились в PHP 7. Они позволяют указать, какой тип данных вы ожидаете, при объявлении функции. Если включить ещё и объявление strict, несоответствие типа останавливает скрипт с ошибкой «Fatal Error».

Режим strict включается с помощью declare(strict_types=1);, и это должна быть самая первая инструкция в файле PHP.

Строгий режим

Здесь объявление strict включено, и функция получает число и строку. Поскольку «5 days» не является целым числом, скрипт завершается с ошибкой:

Prompt
Напишите PHP-скрипт с включённым strict_types, который определяет функцию addNumbers с указанием типов int и вызывает её со строкой, чтобы показать ошибку.
Вывод: PHP-скрипт

Объявления возвращаемого типа в PHP

Объявления типов работают и для инструкции return.

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

Объявление возвращаемого типа

Эта функция объявляет float как возвращаемый тип:

Prompt
Напишите PHP-скрипт с включённым strict_types, который определяет функцию addNumbers с параметрами типа float и объявлением возвращаемого типа float, а затем вызывает её.
Вывод: PHP-скрипт

Другой возвращаемый тип

Возвращаемый тип не обязан совпадать с типами аргументов, если возвращаемое значение действительно имеет объявленный тип. Здесь результат типа float приводится к int:

Prompt
Напишите PHP-скрипт с включённым strict_types, который определяет функцию addNumbers с параметрами типа float и возвращаемым типом int, приводя результат к int.
Вывод: PHP-скрипт