Пользовательские функции в PHP

В любом языке программирования возможно объявлять свои(пользовательские функции). В PHP — это также возможно. Как правило такая необходимость возникает, когда нужна какая-то обработка данных, более одного раза или необходимо получить результат работы нескольких встроенных функций. Поэтому логичнее и проще просто вызвать объявленную функцию, получить результат.

Функции могут принимать параметры(аргументы), необходимые для работы функции, они могут быть со значениями по умолчанию. Но в некоторых случаях, могут и не принимать никаких параметров.

Функции могут возвращать значения, полученные в результате своей работы, могут не возвращать, это определяется необходимостью. Но если предусматривается вернуть значение, то следует знать, что возвращается только одно значение, при необходимости вернуть несколько значений, их будет проще упаковать в массив и его уже вернуть. Для этого используется команда return.

В примере ниже будет описан достаточно стандартный случай, часто встречающийся при интеграциях. Например, вместе с какими-то данными нам приходит дата, в таком формате: «2021-10-14T22:30:00:00+3:00» Ничего страшного в ней нет, но если нам необходимо использовать только число и время, без секунд и миллисекунд, а также без часового пояса, то нам необходимо будет что-то делать с такой строкой. Напишем свою функцию, которая будет возвращать массив, состоящий из нужных значений. Как раз в виде параметра будем передавать нашу неудобную строку.

Чтобы объявить функцию, необходимо после слова function написать ее название, правила именования можно посмотреть здесь, в круглых скобках прописываются параметры, которые возможно использовать в теле функции, которое находится в фигурных скобках, о области видимости можно прочитать здесь. Итак, пример:

function rewritedate($string){
        $tmparray = array();
        /**
         * приходящая строка "2021-10-14T22:30:00:00+3:00"
         * Функция разделяющая приходящую строку на новый массив
         * принимает строку, возвращает массив элементов
         * ['day'] - день (число)
         * ['mon'] - месяц (число)
         * ['year'] - год (число)
         * ['time'] - время
         *
         */
        $tmpvar = explode('T',$string);
        $tmpvar2 = explode('-',$tmpvar[0]);
        $tmpvar3 = explode(':',$tmpvar[1]);

        $tmparray['day'] = $tmpvar2[2];
        $tmparray['mon'] = $tmpvar2[1];
        $tmparray['year'] = $tmpvar2[0];
        $tmparray['time'] = $tmpvar3[0].":".$tmpvar3[1];
        // возвращаем массив
        return $tmparray;
    }
// строка для примера
$str = "2021-10-14T22:30:00:00+3:00";

// в переменную $res сохраняем результат
$res = rewritedate($str);

// распечатываем результат
print_r($res);

В примере выше была объявлена функция rewritedate, затем она вызвана с параметром, ниже результат ее работы:

Array
(
    [day] => 14
    [mon] => 10
    [year] => 2021
    [time] => 22:30
)

При необходимости еще раз отформатировать дату, просто вызываем еще раз функцию и получаем такой результат. Также можно вызывать ее в цикле и собирать новый массив. Про встроенную функцию explode, которая используется в примере, можно почитать здесь.

Как было описано выше, функция может не принимать параметров и не возвращать значение, например:

function test(){
    echo 'Функция вызвана!';
}
test();

Результатом будет вывод на экран: «Функция вызвана!».

Дело в том, что даже если параметры внутри функции не являются обязательными, но указаны при объявлении, вызов функции без передачи параметров, приведет к ошибке и остановке выполнения скрипта. Чтобы избежать такой проблемы, можно указать параметрам значения по умолчанию, например:

function testfun($param=0){
  // какие-то действия....
}

При таком варианте уже не будет ошибки, если не передать параметр, при вызове.

Добавить комментарий

Ваш адрес email не будет опубликован.