Собствени функции в 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) тогава вече ще видим час и дата.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.