Функции в языке PHP
PHP позволяет создавать свои функции, вызывать стандартные , использовать чужие функции из дополнительных библиотек.
Есть огромное количество стандартных библиотек PHP-функций.
Определение функции
function functionName() {
блок кода
}
Вызов функции
functionName();
Функции с аргументами
PHP предоставляет возможность передавать параметры в функции. Можно передать столько параметров, сколько необходимо. Эти параметры передаются в момент вызова и работают как переменные внутри функции.
function functionName($par1,$par2) {
блок кода
}
Возвращаемые значения
Функция может возвращать значение, используя оператор return. Return останавливает выполнение функции и возвращает значение обратно в вызывающую программу.
Вы можете вернуть несколько значений из функции, используя массив возвращаемых значений (1,2,3,4).
<?php
function addFunction($num1, $num2) {
$sum = $num1 + $num2;
return $sum;
}
$return_value = addFunction(10, 20);
echo "Returned value from the function : $return_value"; ?>
Передача аргументов по ссылке
По умолчанию аргументы функции передаются по значению. Если вы хотите разрешить функции изменять свои аргументы, вы должны передать аргументы по ссылке. Чтобы передать аргумент функции как ссылку, добавляется символ амперсанда (&) перед именем переменной.
Аргументы, передаваемые по ссылке (by reference) доступны вне функции.
Аргументы, передаваемы по значению (by value) удаляются автоматически после выхода из функции.
function functionName(&$par1) {
блок кода
}
Установка значений по умолчанию для аргументов функций
Можно задать аргумент функции таким образом, чтобы он имел некоторое значение по умолчанию, на тот случай, если вызывающая программа не присваивает ему никакого значения.
Следующая функция печатает NULL в том случае, если вызывающая программа не присваивает этому аргументу значение.
<?php
function printMe($param = NULL) {
print $param;
}
printMe("This is test");
printMe();
?>
Динамический вызов функции
Функция вызывается по её имени. В языке PHP можно при вызове функций формировать их имя динамически, как строковую переменную.
<?php
function sayHello() {
echo "Hello<br />";
}
$function_holder = "sayHello";
$function_holder();
?>
Область действия переменных
local - переменные, которые видны только внутри самой функции
global - переменные , описанные вне функции
static - переменные, которые видны только внутри функции, но сохраняют своё значение при выходе из неё.
PHP7 - strict_type
Язык PHP не требует явного описания типов переменных. Так называемый loosely typed language.
В версии 7 добавлена опция для обязательного описания типов данных.
<?php declare(strict_types=1);
При использовании этой директивы все типы данных должны быть явно описаны.
В приведённом примере без использования директивы declare(strict_types=1); php преобразует типы: float(3.14) в int(3) и string('23') в float(23.0)
С использованием этой директивы необходимо все типы переменных описать вручную
<?php
// declare(strict_types=1);
function my_sum(int $a, float $b) : int
{
return $a + (int)$b;
}
echo my_sum(3.14, '23');
<?php
declare(strict_types=1);
function my_sum(int $a, float $b) : int
{
return $a + (int)$b;
}
echo my_sum((int)3.14, (float)'23');
Примеры
Печать таблицы
function familyName($fname, $year) {
echo "<tr><td>$fname</td><td>$year</td></tr>";
}
echo("<br><table border='1'><tr><th>Имя</th><th>Год рождения</th></tr>");
familyName("Иван Иванов", "1975");
familyName("Николай Петров", "1978");
familyName("Рабинович Наталья", "1983");
echo("</table><br>");
Конвертация
Конвертировать 375 шек
<?php
define("USD" ,"3.8");
define("EURO","4.1");
function Convert ($amount,$NewCurrency) {
switch ($NewCurrency){
case "USD":
return sprintf("%.2f USD", $amount/USD);
break;
case "EURO":
return sprintf("%.2f Euro", $amount/EURO);
break;
default:
return "Incorrect currency code";
}
}
echo "В доллары : " . Convert (375,"USD") . "<br>";
echo "В евро : " . Convert (375,"EURO") . "<br>";
echo "В рубли : " . Convert (375,"RUB") . "<br>";
?>