Аргументи на функция
В кръглите скоби, които задължително се поставят след всяка PHP функция, може да има един или повече параметъра (наричат се още аргументи на функция). Аргументите на функциите представляват променливи, които съдържат някаква стойност. Стойностите им могат да бъдат както цифрени, така и буквени. Когато са повече от една, тези променливи се отделят чрез запетаи.
Предварително дефинираните (вградените в езика) функции може да имат някои задължителни параметри. Например функцията mail(), чрез която могат да се изпращат имейл съобщения, трябва задължително да има в кръглите скоби променливи, които съдържат имейл адреса, до който ще се праща съобщението, темата на съобщението, съдържанието на самото съобщение и в допълнителните хедъри – имейл адреса на подателя на съобщението.
Когато програмистът създава собствена функция, от него зависи дали ще ѝ зададе някакви аргументи или не.
След като са зададени някакви аргументи в кръглите скоби на функцията, те може да се използват в изпълнимия код, който се поставя в големите скоби – {}
. В този код може да се зададат някакви ефекти на аргументите или извършване на някакви действия с тях.
Когато на дадена функция се задават някакви променливи във вид на аргументи, на тях още при дефинирането на функцията може да им се зададат някакви стойности, а може да им се зададе стойност и по-късно, при извикването на функцията.
Ако на даден аргумент (променлива) на функция се зададе някаква стойност при дефинирането на функцията, тогава се казва, че това е стойността на аргумента по подразбиране. Ако при извикването на функцията не бъде зададена някаква друга стойност на аргумента, се използва стойността по подразбиране. Ако обаче при извикването на функцията се укаже друга стойност на аргумента, тогава стойността по подразбиране се пренебрегва автоматично и се работи с новата стойност.
Да направим функция podpis()
и да ѝ зададем аргументите $ime
и $familia
. Ще присвоим на аргумента (променливата) $ime
стойността „Иван“ и на аргумента (променливата) $familia
ще присвоим стойността „Иванов“. След това в големите скоби ще укажем при извикване на функцията, името и фамилията да се извеждат на екран, като на името ще зададем ефекта „удебелен текст“, а на фамилията – „удебелен и наклонен текст“:
<?php
function podpis($ime = "Иван", $familia = "Иванов")
{
echo "<b>$ime <i>$familia</i></b>";
}
?>
В този случай се казва, че аргументът $ime
има стойност по подразбиране „Иван“ и аргумента $familia
има стойност по подразбиране „Иванов“.
Сега да извикаме функцията чрез кода:
<?php
podpis(Иван, Иванов);
?>
или чрез кода:
<?php
podpis();
?>
Ако изрично не укажем някакви други стойности, както е в случая, ще получим следния резултат:
Иван Иванов
Ако напишем кода:
<?php
podpis(Иван);
?>
ще получим абсолютно същия резултат, т.е. отново Иван Иванов. В този случай не сме извикали втория аргумент, но по подразбиране е указано той да има стойност „Иванов“ със съответния текстов ефект. Затова при извикване на функцията дори ако напишем само първия аргумент (в случая това е аргументът със стойност малкото име „Иван“), все пак като резултат ще получим показването и на името и на фамилията.
Ако обаче напишем:
<?php
podpis(Петър);
?>
като резултат ще получим на екрана думите Петър Иванов. Това е така, защото стойността „Петър“ е заместила стойността по подразбиране „Иван“. Както беше обяснено, стойностите на аргументите по подразбиране се ползват само ако при извикването на функцията изрично не бъде зададена друга стойност на аргумента. В случая е зададена друга стойност – името Петър. Стойността на аргумента $familia
си остава „Иванов“, както е зададена по подразбиране, тъй като за този аргумент не е указана друга стойност.
Можем да декларираме същата функция и по следния начин:
<?php
function podpis($ime, $familia)
{
echo "<b>$ime <i>$familia</i></b>";
}
?>
В този случай не сме задали на аргументите стойности по подразбиране. Тогава каквито и две имена да напишем при извикване на функцията, например
<?php
podpis(Петър, Петров);
?>
или
<?php
podpis(Иван, Стоянов);
?>
и т.н. ще получим като резултат извеждане на имената на екран, като първото име ще е с удебелен шрифт, а второто – с удебелен и наклонен. Необходимо е както при декларирането на функцията, така и при извикване на функцията да укажете и двата аргумента, отделени със запетаи, в противен случай PHP ще ви изведе съобщение за грешка.
Конструкция return
Конструкцията return се използва във функции, като предназначението ѝ е да върне във вид на стойност резултата от действието, зададено на функцията в големите скоби. Например кода:
<?php
function suma($prom1, $prom2)
{
return $prom1 + $prom2;
}
echo suma(100, 50);
?>
или някакъв по-сложен вариант, например:
<?php
function suma($prom1, $prom2)
{
$prom3 = $prom1 + $prom2;
return $prom3;
}
$prom4 = suma(100, 50);
echo $prom4;
?>
ще ни дадат като краен резултат извеждане на екран на числото 150, тъй като сме задали като действие да се изпълни сбор от двата аргумента на функцията, а след това при извикване на функцията е зададено аргументите да имат стойности съответно 100 и 50. Ако от първия пример премахнем ключовата дума return
или от втория пример премахнем реда return
$prom3
; няма да получим резултат.