<?php
function CalcSum($a = 0, $b = 0, $c = 5){
$d = $a + $b + $c;
return $d;
}
$x = 2;
$y = 3;
$z = 4;
$m = CalcSum($x, $y, $z);
echo $m; // результат '9'
?>
Разберём пример сверху вниз. На второй строчке задаётся функция CalcSum. Название у функции может быть любое. Оно может содержать только латинские буквы и цифры. Обычно названия функций делают такими, чтобы можно было догадаться, что они делают: CalcSum = Calculation (вычисление) + Sum (сумма).
Функция должна задаваться до её первого вызова. Это означает, что в примере нельзя написать строчку $m = CalcSum($x, $y, $z); выше, чем строчку function CalcSum( ... ){. Иначе PHP скажет, что не знает функцию CalcSum, и выдаст ошибку
Последняя строчка в функции содержит слово return (переводится как "возврат"). Благодаря этой строчке в результате выполнения функции CalcSum возвращается значение переменной $d. И в нашем случае это значение попадает в переменную $m.
Функции CalcSum можно передать три аргумента. Если не передать все три, а к примеру, только один (первый), то для второго аргумента будет использовано значение "0", а для третьего "5". Эти значения по умолчанию зависят от того, что стоит в скобках при задании функции CalcSum($a = 0, $b = 0, $c = 5). Значениям по умолчанию могут быть не только цифры, но и строки.
Функции CalcSum($a = 0, $b = 0, $c = 5) из примера можно передать три и менее аргументов. К примеру так: CalcSum(8, 1) или CalcSum(4). Но если передать больше трёх аргументов CalcSum(7, 2, 6, 4), то PHP выдаст ошибку
Функции могут не только возвращать значения, но и писать его на экран. К примеру:
<?php
function CalcSum($a = 0, $b = 0, $c = 5){
$d = $a + $b + $c;
echo 'Результат: ' . $d;
return $d;
}
$m = CalcSum(2, 3, 4);
?>
При вызове этой функции на экран будет выведена цифра "9". При этом "echo" стоит внутри функции, а не вне.В функции может быть несколько return. Но как только исполнится первый, то процесс выйдет из функции и остальной код внутри функции не будет выполнен. Иногда это делается в целях экономии ресурсов, к примеру, не надо делать ресурсоёмкие вычисления, если параметры попадают в какой-то диапазон. Либо это делают в целях безопасности, к примеру, надо прервать функцию сохранения изменений в базе данных, если у пользователя оказалось недостаточно прав доступа.
Попробуем продемонстрировать возможность сделать несколько return в одной функции :
<?php
function CalcSum($a = 0, $b = 0, $c = 5){
$d = $a + $b + $c;
if($d < 10){
return 0;
}elseif(10 < $d and $d < 20){
return $d + 50;
}elseif(100 < $d){
return 100;
}
return 21;
}
?>
Если функция небольшая и от обрыва её выполнения не получится большого прироста производительности, то можно не делать несколько return. В таком случае последнему return передают результат-переменную. Перепишем предыдущий пример для такой логики:
<?php
function CalcSum($a = 0, $b = 0, $c = 5){
$d = $a + $b + $c;
if($d < 10){
$d = 0;
}elseif(10 < $d and $d < 20){
$d += 50;
}elseif(100 < $d){
$d = 100;
}
return $d;
}
?>