Содержание:
Встроенные php функции
Функция — фрагмент кода программы, который можно выполнять многократно в любом месте данной программы.
Все функции языка PHP подразделяются на:
- встроенные
- пользовательские
Встроенные функции — это предусмотренные синтаксисом языка конструкции, выполняющие конкретные действия. Примером могут служить рассмотренные ранее функции echo()
и print()
.
Кроме того, есть функции для работы с изображениями, функции обработки строк, для работы с датами и временем, а также для работы с базами данных. Некоторые из них будут рассмотрены в последующих уроках.
Что необходимо знать про любые функции:
- после названия функции всегда ставятся круглые скобки (могут быть пустые или с аргументами функции внутри, перечисленными через запятые);
- функция может принимать информацию из программы через список аргументов, разделенных запятыми (аргументы читаются слева направо);
- если в функцию передаются аргументы не того типа, на который она «рассчитывает» (например
string
вместоarray
), то будет выдаваться либоNULL
либо ошибка; - для вызова функции достаточно написать ее имя и список фактических аргументов в круглых скобках.
PHP пользовательские функции
Пользовательские функции — те, которые не предусмотрены синтаксисом языка, а созданы пользователем в целях решения поставленной задачи.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 | // описание функции function sayHello(){ echo "Привет!<br/>"; } // вызов функции sayHello(); // проверка существования функции if (function_exists("sayHello")) { echo "есть"; } |
Результат:
Привет! есть
- Внутри функции может быть любая последовательность операторов и даже описание другой функции.
- Все функции имеют глобальную область видимости, это значит, что они могут быть вызваны в любом месте программы, даже если были определены внутри функции и наоборот.
Рассмотрим пример:
Выполнение:
1 2 3 4 5 6 7 8 | function function1() { echo "<p>Первая функция</p>"; function function2() { echo "<p>Вторая функция</p>"; } } function1(); function2(); |
Результат:
Первая функция Вторая функция
Пример иллюстрирует, что средства php не позволяют создавать локальных функций, т.е. которые будут «видны» только в определенных местах кода программы. В нашем случае function2()
должна быть локальной, т.е. область ее видимости — только функция function1()
. Вызывая локальную функцию из общей программы, должна выдаваться ошибка. Но в php данный механизм отсутствует, и ошибки нет. Таким образом обе функции в примере глобальные.
Создание функции php с аргументами
Рассмотрим синтаксис функции с аргументами на примере
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // описание функции function sayHello($name){ echo "Привет, $name!<br/>"; } // вызов функции вариант 1 sayHello("Вася"); // вызов функции вариант 2 $name="Вася"; sayHello($name); // вызов функции вариант 3 $myFunc="sayHello"; // здесь круглые скобки не нужны! $myFunc("Вася"); |
Все три способа вызова функции равнозначны.
Примечание: степень в php вычисляется при помощи функции pow()
pow ($a, $b);
где $a
— число, $b
— степень
Передача аргументов по ссылке
Традиционно аргументы в функцию передаются по значению, т.е. если значение аргумента изменить внутри самой функции, то в общей программе с этим аргументом ничего не произойдет, он останется прежним (внутри функции аргумент локален, т.е. «не виден» на уровне общей программы).
Но если необходимо сделать так, чтобы функция имела возможность изменять значения аргумента и на уровне программы (глобально), то необходимо передавать аргумент по ссылке. Это делается при помощи символа амперсанд &
&str='Просто строка'
). Изменить в функции значение аргумента (прибавить к ней значение ‘и кое-что еще.’)Решение:
1 2 3 4 5 6 7 | function add_str(&$str2) { $str2 .= 'и кое-что еще.'; } $str1 = 'Просто строка, '; add_str($str1); echo $str1; // выведет 'Просто строка, и кое-что еще.' |
Задание 1
- Опишите функцию
getTable()
- Задайте для функции три аргумента:
cols
,rows
,color
Задание 2
- Скопируйте код, отрисовывающий таблицу умножения из лабораторной работы предыдущего урока
- Вставьте скопированный код в тело функции
getTable()
- Измените код таким образом, чтобы таблица отрисовывалась в зависимости от входящих параметров
cols
,rows
иcolor
Задание 3
getTable()
с различными параметрамиАргументы по умолчанию
В php в пользовательских функциях можно задавать значения по умолчанию для аргументов. Т.е. если в программе не передать значение аргумента, то аргумент примет то значение, которое установлено по умолчанию.
Решение:
1 2 3 4 5 6 7 | function sayHello($p,$name = "Гость"){ echo "$p, $name!<br/>"; } sayHello("Привет","Вася"); // Привет, Вася! sayHello("Здравствуйте"); // Здравствуйте, Гость! sayHello("Привет",null); // Привет, ! |
Задание 4
- Откройте предыдущее задание с отрисовкой таблицы в функции. Измените входящие параметры функции
gettable()
на параметры по умолчанию
Задание 5
getTable()
без параметров getTable()
с одним параметром getTable()
с двумя параметрамиВозвращение значений функцией, Return
Функция может не только выполнять какие-то конкретные действия, выводя их значения на экран, она также может просто возвращать в программу какие-то вычисленные значения.
Внутри такой функции используется оператор возврата return
(с англ. «вернуть»), после которого указывается возвращаемое значение (или переменная, массив, выражение и т.п.)
Вызов такой функции осуществляется либо через присваивание переменной, либо сразу через вывод на экран.
Решение:
1 2 3 4 5 6 7 8 | function sum($a, $b) { return $a + $b; } // 1 вариант вызова echo sum(1, 2) ; // 2 вариант вызова $x=sum(1, 2); echo $x; |
=2
) для аргумента Задание 1
- Опишите функцию
getMenu()
- Задайте для функции первый аргумент
menu
, в него будет передаваться массив, содержащий структуру меню - Задайте для функции второй аргумент
vertical
со значением по умолчанию равнымTRUE
(логический тип данных — true-истина, false-ложь).
Данный параметр указывает, каким образом будет отрисовано меню — вертикально или горизонтально
Задание 2
- Откройте файл c лабораторной работой с отрисовкой меню
- Скопируйте код, который создает массив menu и вставьте скопированный код в данный документ
- Скопируйте код, который отрисовывает меню
- Вставьте скопированный код в тело функции
getMenu()
- Измените код таким образом, чтобы меню отрисовывалась в зависимости от входящих параметров
menu
иvertical
Задание 3
- Отрисуйте вертикальное меню вызывая функцию
getMenu()
с одним параметром - Отрисуйте горизонтальное меню вызывая функцию
getMenu()
со вторым параметром равнымFALSE
- Сохраните код в отдельном файле