Собствени функции в PHP
Колкото и богат откъм функции език да е PHP винаги ще се наложи да създаваме собствени функции. Много често те ще комбинират действието от няколко по-прости вградени такива, за да достигнем до желания резултат.
Функции в PHP се създават с помощта на ключовата дума function
. След това трябва да се изпише името на функцията. После в скоби се изреждат аргументите, които функцията приема. Накрая идва и тялото на функцията, изписано във фигурни скоби.
Примерна функция
Пример за функция, която извежда текст с текущото време е:
function current_time() {
echo date('H:i:s');
}
Името на функцията, която сме дефинирали е current_time
.
В кръглите скоби след името не сме описали никакви аргументи, които биха могли да повлияят на крайния резултат.
Тялото на функцията вика echo
, което ще изпише на екрана датата. Последната идва от функцията date()
, която викаме.
За повече информация точно как работи функцията date
можете да видите документацията ѝ. За сега само накратко ще кажем, че аргументът, който ѝ подаваме ще изпише текущия час на сървъра като: „ЧЧ:ММ:СС“. Където „ЧЧ“ обозначава час (с водеща нула, ако е преди от 10), „ММ“ са минутите (отново с водеща нула), а „СС“ са секундите.
Извикване на функция
Функцията извикваме като изпишем името ѝ заедно с кръглите скоби и потенциални аргументи в тях:
function current_time() {
echo date('H:i:s');
}
current_time();
При мене това показва: „15:08:17“, което е часът, в който пиша този урок.
Добавяне на аргумент
Можем да променим функцията и чрез аргумент да предоставим възможност да се покаже и датата:
function current_time($show_date) {
if ($show_date === false) { // ако не искаме да показваме дата
$format = 'H:i:s'; // използваме същия формат като преди
} else { // в противен случай
$format = 'H:i:s, d.m.Y'; // освен ЧЧ:ММ:СС показваме и ДД.ММ.ГГГГ
}
echo date($format);
}
current_time(true);
Сега вече резултатът при мене е „15:21:41, 07.02.2015“.
Ако извикаме current_time(false)
, резултатът ще е като от предния вариант на функцията.
Проблем идва обаче, когато решим да не подадем аргумент, а извикаме само current_time()
.
Аргументът на функцията е задължителен и в подобен случай ще ни бъде изписана грешка:
Warning: Missing argument 1 for current_time()
Незадължителен аргумент
За да направим аргумента незадължителен трябва да му зададем стойност по подразбиране. Това става като просто изпишем знак за равенство след името на аргумента и стойността, която искаме да му зададем:
function current_time($show_date = false) {
// ...
}
Така викайки current_time()
ние ще виждаме само часа, а ако изпишем current_time(true)
тогава вече ще видим час и дата.