PHP
Пользовательские функции
Выражение return
Пример перадачи значения по ссылке
Встроенных в PHP функций может быть не достаточно. PHP дает возможность создавать собстенные функции , объявлять их и затем использовать. То есть использовать пользовательские функции. Эти функции нужны для того,чтобы сделать удобным использования нашего кода. Например, при дублировании части кода, который мы можем использовать хотя бы два раза, а то и больше, то такой код очень удобно обернуть в функцию, которая затем вызывается точно так же как и функции PHP.
Пользовательские функции
Создадим в папке с уроком новый файл funcs.php и вынесем в него нашу функцию.
Подключаем в файле index.php с помощью require_once файл funcs.php
Если мы хотим использовать фукцию в другом файле, нам достачно подключить файл funcs.php и вызывать функцию sum($a, $b). Причем в файле funcs.php, еще его называют библиотекой функций, может быть объявленно сколь угодно много различных функций.
Если функция вызвана без параметров, то это вызовет ошибку. Что-бы обезопасить наш код от оплошности пользователя - надо для функции установить параметры по умолчанию. Например: $a = 1, $b = 2 , при этом ошибка пропадет:
-- файл funcs.php --
<?php
function ($a = 1, $b = 2){ // объявление функции
echo $a + $b;
echo '<br>';
}
Если функция вызвана с одним параметром, то второй параметр будет - по умолчанию.
Если переменная объявлена вне функции, на результаты вызовов функции sum это не повлияет.
Подключение файла funcs.php и вызов функции в индексном файле:
-- файл index.php --
<?php
// Подключаем файл funcs.php
require_once 'funcs.php';
// вызов функции, в качесте параметров передаем два числа
(5, 7);
// повторный вызов функции
(10, 5);
(5, 10);
// переменная вне функции - на результаты вызовов функции sum не повлияет
$a = 200;
// объявление переменных
$x = 100;
$y = 10;
// вызов функции, где в качестве параметров - объявленные переменные
($x, $y);
// вызов функции без параметров - вызовет ошибку (если параметры не установленны по умолчанию)
();
// вызов функции с одним параметром - второй параметр будет - по умолчанию
(100);
echo $a;
?>
выведет:
12
15
15
// вызов функции, где в качестве параметров - объявленные переменные
110
// при вызове функции без параметров (параметры по умолчанию: $a = 1, $b = 2 )
3
// при вызове функции с одним параметром (100 + 2 = 102 - второй параметр: $b = 2)
102
// переменная вне функции, выведена с помощью echo
200
- где function - ключевое слово,
- sum - имя нашей фунции.
(Название функции может начинаться либо с буквы, либо с символа подчеркивания),
- $a и $b - параметры функции (локальные переменные, которые используются внутри функции),
- $x и $y - переменные, а $a и $b - параметры
Имя функции не должно пересекаться с именем уже имеющихся функций. То есть, два раза объявить одну и ту же функцию нельзя.
Вызывать функцию можно повторно сколько угодно раз.
Если же переменная объявлена внутри функции, то результаты вычислений поменяются, а переменная $a, объявленная вне функции, останется без изменения:
-- файл funcs.php --
<?php
function ($a = 1, $b = 2){
$a = 300; // переменная объявляется внутри функции
echo $a + $b;
echo '<br>';
}
файл index.php:
-- файл index.php --
<?php
// подключаем файл funcs.php
// переменная $a = 300 объявленна внутри функции
require_once 'funcs.php';
// вызов функции, в качесте параметров передаем два числа (300+7=307)
(5, 7);
// повторный вызов функции (300+5=305)
(10, 5);
// (300+10=310)
(5, 10);
// переменная вне функции - на результаты вызовов функции sum - не повлияет
$a = 200;
// объявление переменных
$x = 100;
$y = 10;
// вызов функции, где в качестве параметров - объявленны переменные (300+10=310)
($x, $y);
// вызов функции без параметров - вызовет ошибку
// (если параметры не установленны по умолчанию, по умолчанию у нас 300+2=302)
();
// вызов функции с одним параметром - второй параметр будет - по умолчанию (300+2=302)
(100);
echo $a;
?>
После вызова функции:
выведет:
307
305
310
310
302
302
200 // переменная вне функции, выведена с помощью echo
Пример перадачи значения по ссылке
В файле funcs.php объявим функцию sum_1, где переменная $a - переменная, которая передается по ссылке ( & ):
--файл funcs.php --
<?php
...
...
...
// объявление функции sum_1 (где: & - ссылка)
function ( & $a, $b ){
echo $a + $b;
echo '<br>';
$a = 100;
}
Вызываем функцию sum_1 в файле index.php:
--файл index.php --
<?php
// поключаем файл funcs.php
require_once 'funcs.php';
$a = 5;
$b = 10;
echo $a; // переменная $a до вызова функции
echo '<br>';
( & $a, $b); // вызов функции sum_1( & $a, $b)
echo $a; // переменная $a после вызова функции, выведена с помощью echo
?>
выведет:
5 // переменная $a до вызова функции
15 // результат работы функции sum_1(& $a, $b)
100 // переменная $a после вызова функции, выведена с помощью echo
- если мы передадим переменную $a по ссылке & , то увидим результат - переменная $a изменилась
и приняла значение $a = 100, то есть функция теперь ее меняет. Она теперь равна не 5, а 100 - тому значению, которое было поставленно в функции, поскольку переменную $a мы передаем по ссылке.
return в функциях
Слово return переводится как "вернуть".
В файле funcs.php объявим функцию sum_2:
--файл funcs.php --
<?php
...
...
...
// функция sum_2
function sum_2($a, $b){ // объявление функции sum_2
$c = $a + $b;
return $c;
// return $a + $b; - сразу возвращаем результат
}
Вызываем функцию sum_2, и передадим ей два параметра: 1 и 2
--файл index.php --
<?php
// поключаем файл funcs.php
require_once 'funcs.php';
(1, 2); // результат ее работы на экран не выводится
echo (1, 2);// выведет 3
echo '<br>';
echo 5 + (1, 2);// выведет 8
echo '<br>';
$res = (1, 2);
echo $res ; // выведет 3
?>
Выведет с помощью echo:
3
8
3
Слово return переводится как "вернуть", "возвратить". И в данном случае наша функция не выводит на экран результа, она его возвращает в программу для дальнейшего использования и его мы можем вывести с помощью оператора echo.
Например, мы можем прибавить 5 к результату, который вернула функция, или сохранить его в переменную.
Признаком зачастую хорошего тона является сделать функцию, которая будет не выводить сразу что-то на экран, а именно возвращать результат с помощью оператора return, поскольку в дальнейшем пользователь может сделать с этим результатом что угодно. Он может его вывести, сохранить в переменную, константу, сохранить в базу данных. Не обязательно сохранять результат в переменную, мы можем сразу его вернуть:
return $a + $b;
Так же функция может возвращать что угодно, например: булево - true, false; и т. д.
Пример.
Написать собственную функцию, аналог функции array_keys, которая возвращает ключи массива. То есть наша функция возвращает массив, значением которого будут ключи, того массива, который мы передаем в качестве параметра.
Работа функции array_keys:
--файл index.php --
<?php
// поключаем файл funcs.php
require_once 'funcs.php';
$nums = [1, 2, 3];
$keys = ($nums );
print_r ($keys);
// выведет: Array ( [0] => 0 [1] => 1 [2] => 2 )
?>
В файле funcs.php объявим функцию my_array-keys($arr), в качестве параметра она принимает массив $arr:
--файл funcs.php --
<?php
...
...
...
// функция my_array_keys
function ($arr){
$data = []; // объявляем пустой массив
foreach ($arr as $k => $v) {
$data[] = $k; // заполняем массив $data ключами $k
}
return $data; // возвращаем массив $data
}
вызываем поочередно нашу функцию my_array_keys, с параметрами $nums, $names, $names2 и test :
--файл index.php --
<?php
// поключаем файл funcs.php
require_once 'funcs.php';
$nums = [1, 2, 3];
$names = [ 'ivanon' , 'Petrov' ];
$names2 = ['Ivan' => 'Ivanov' , 'Petr' => 'Petrov' ];
$test =[];
echo '<br>';
$keys = ($nums );
print_r($keys);
// Результат аналогичен работе функции array_keys.
// выведет: Array ( [0] => 0 [1] => 1 [2] => 2 )
echo '<br>';
$keys2 = ($names);
print_r($keys2);
// выведет: Array ( [0] => 0 [1] => 1 )
echo '<br>';
$keys3 = ($names2);
print_r($keys3);
// выведет: Array ( [0] => Ivan [1] => Petr
echo '<br>';
$keys4 = ($test);
print_r($keys4);
// выведет: Array ( )
echo '<br>';
?>
выведет:
Array ( [0] => 0 [1] => 1 [2] => 2 ) // $keys
Array ( [0] => 0 [1] => 1 ) // $keys2
Array ( [0] => Ivan [1] => Petr ) // $keys3
Array ( ) // $test
Структура файлов урока
Наверх Наверх