Php method with return

Пользовательские функции
Выражение return

Встроенных в PHP функций может быть не достаточно. PHP дает возможность создавать собстенные функции , объявлять их и затем использовать. То есть использовать пользовательские функции . Эти функции нужны для того,чтобы сделать удобным использования нашего кода. Например, при дублировании части кода, который мы можем использовать хотя бы два раза, а то и больше, то такой код очень удобно обернуть в функцию, которая затем вызывается точно так же как и функции PHP.

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

Создадим в папке с уроком новый файл funcs.php и вынесем в него нашу функцию.

Подключаем в файле index.php с помощью require_once файл funcs.php

Если мы хотим использовать фукцию в другом файле, нам достачно подключить файл funcs.php и вызывать функцию sum($a, $b) . Причем в файле funcs.php, еще его называют библиотекой функций , может быть объявленно сколь угодно много различных функций.

Если функция вызвана без параметров, то это вызовет ошибку. Что-бы обезопасить наш код от оплошности пользователя — надо для функции установить параметры по умолчанию. Например: $a = 1, $b = 2 , при этом ошибка пропадет:

Если функция вызвана с одним параметром, то второй параметр будет — по умолчанию.

Если переменная объявлена вне функции, на результаты вызовов функции sum это не повлияет.

Подключение файла funcs.php и вызов функции в индексном файле:

// Подключаем файл funcs.php
require_once ‘funcs.php’ ;

// вызов функции, в качесте параметров передаем два числа
sum ( 5 , 7 );

// повторный вызов функции
sum ( 10 , 5 );
sum ( 5 , 10 );

// переменная вне функции — на результаты вызовов функции sum не повлияет
$a = 200 ;

// объявление переменных
$x = 100 ;
$y = 10 ;

// вызов функции, где в качестве параметров — объявленные переменные
sum ( $x , $y );

// вызов функции без параметров — вызовет ошибку (если параметры не установленны по умолчанию)
sum ();

// вызов функции с одним параметром — второй параметр будет — по умолчанию
sum ( 100 );

// вызов функции, где в качестве параметров — объявленные переменные
110

// при вызове функции без параметров (параметры по умолчанию: $a = 1, $b = 2 )
3

// при вызове функции с одним параметром (100 + 2 = 102 — второй параметр: $b = 2)
102

// переменная вне функции, выведена с помощью echo
200

— где function — ключевое слово,

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

— $a и $b — параметры функции (локальные переменные, которые используются внутри функции),

— $x и $y — переменные , а $a и $b — параметры

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

Вызывать функцию можно повторно сколько угодно раз.

Если же переменная объявлена внутри функции , то результаты вычислений поменяются, а переменная $a , объявленная вне функции, останется без изменения:

function sum ( $a = 1 , $b = 2 ) <
$a = 300 ; // переменная объявляется внутри функции
echo $a + $b ;
echo ‘
‘ ;
>

// подключаем файл funcs.php
// переменная $a = 300 объявленна внутри функции
require_once ‘funcs.php’ ;

// вызов функции, в качесте параметров передаем два числа (300+7=307)
sum ( 5 , 7 );

// повторный вызов функции (300+5=305)
sum ( 10 , 5 );

// переменная вне функции — на результаты вызовов функции sum — не повлияет
$a = 200 ;

// объявление переменных
$x = 100 ; $y = 10 ;

// вызов функции, где в качестве параметров — объявленны переменные (300+10=310)
sum ( $x , $y );

// вызов функции без параметров — вызовет ошибку
// (если параметры не установленны по умолчанию, по умолчанию у нас 300+2=302)
sum ();

// вызов функции с одним параметром — второй параметр будет — по умолчанию (300+2=302)
sum ( 100 );

выведет:
307
305
310
310
302
302
200 // переменная вне функции, выведена с помощью echo

Пример перадачи значения по ссылке

В файле funcs.php объявим функцию sum_1 , где переменная $a — переменная, которая передается по ссылке ( & ):

Вызываем функцию sum_1 в файле index.php:

// поключаем файл funcs.php
require_once ‘funcs.php’ ;

echo $a ; // переменная $a до вызова функции
echo ‘
‘ ;

sum_1 ( & $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 :

// функция sum_2
function sum_2 ( $a , $b ) < // объявление функции sum_2
$c = $a + $b ;
return $c ;
// return $a + $b; — сразу возвращаем результат
>

Вызываем функцию sum_2 , и передадим ей два параметра: 1 и 2

// поключаем файл funcs.php
require_once ‘funcs.php’;

sum_2 ( 1 , 2 ); // результат ее работы на экран не выводится
echo sum_2 ( 1 , 2 ); // выведет 3
echo ‘
‘ ;

echo 5 + sum_2 ( 1 , 2 ); // выведет 8
echo ‘
‘ ;

$res = sum_2 ( 1 , 2 );
echo $res ; // выведет 3
?>
Выведет с помощью echo:
3
8
3

Слово return переводится как «вернуть», «возвратить». И в данном случае наша функция не выводит на экран результа, она его возвращает в программу для дальнейшего использования и его мы можем вывести с помощью оператора echo .

Например, мы можем прибавить 5 к результату, который вернула функция, или сохранить его в переменную.

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

Так же функция может возвращать что угодно, например: булево — true , false ; и т. д.

Написать собственную функцию, аналог функции array_keys , которая возвращает ключи массива. То есть наша функция возвращает массив, значением которого будут ключи, того массива, который мы передаем в качестве параметра.

Работа функции array_keys :

// поключаем файл funcs.php
require_once ‘funcs.php’;

$nums = [ 1 , 2 , 3 ];
$keys = array_keys ( $nums );
print_r ( $keys );
// выведет: Array ( [0] => 0 [1] => 1 [2] => 2 )
?>

В файле funcs.php объявим функцию my_array-keys($arr) , в качестве параметра она принимает массив $arr :

// функция my_array_keys
function my_array_keys ( $arr ) $data = []; // объявляем пустой массив
foreach ( $arr as $k => $v ) $data [] = $k ; // заполняем массив $data ключами $k
>
return $data ; // возвращаем массив $data
>

вызываем поочередно нашу функцию my_array_keys , с параметрами $nums , $names , $names2 и test :

// поключаем файл funcs.php
require_once ‘funcs.php’ ;

$nums = [ 1 , 2 , 3 ];
$names = [ ‘ivanon’ , ‘Petrov’ ];
$names2 = [ ‘Ivan’ => ‘Ivanov’ , ‘Petr’ => ‘Petrov’ ];
$test =[];

$keys = my_array_keys ( $nums );
print_r ( $keys );
// Результат аналогичен работе функции array_keys.
// выведет: Array ( [0] => 0 [1] => 1 [2] => 2 )
echo ‘
‘ ;

$keys2 = my_array_keys ( $names );
print_r ( $keys2 );
// выведет: Array ( [0] => 0 [1] => 1 )
echo ‘
‘ ;

$keys3 = my_array_keys ( $names2 );
print_r ( $keys3 );
// выведет: Array ( [0] => Ivan [1] => Petr
echo ‘
‘ ;

$keys4 = my_array_keys ( $test );
print_r ( $keys4 );
// выведет: Array ( )
echo ‘
‘ ;

?>
выведет:
Array ( [0] => 0 [1] => 1 [2] => 2 ) // $keys
Array ( [0] => 0 [1] => 1 ) // $keys2
Array ( [0] => Ivan [1] => Petr ) // $keys3
Array ( ) // $test

Источник

Возврат значений

Значения возвращаются при помощи необязательного оператора возврата. Возвращаемые значения могут быть любого типа, в том числе это могут быть массивы и объекты. Возврат приводит к завершению выполнения функции и передаче управления обратно к той строке кода, в которой данная функция была вызвана. Для получения более детальной информации ознакомьтесь с описанием return .

Замечание:

Если конструкция return не указана, то функция вернет значение NULL .

Использование выражения return

Пример #1 Использование конструкции return

Функция не может возвращать несколько значений, но аналогичного результата можно добиться, возвращая массив.

Пример #2 Возврат нескольких значений в виде массива

function small_numbers ()
return array ( 0 , 1 , 2 );
>
list ( $zero , $one , $two ) = small_numbers ();
?>

Для того, чтобы функция возвращала результат по ссылке, вам необходимо использовать оператор & и при описании функции, и при присвоении переменной возвращаемого значения:

Пример #3 Возврат результата по ссылке

Для получения более детальной информации о ссылках обратитесь к разделу документации Подробно о ссылках.

Объявление типов возвращаемых значений

В PHP 7 добавлена возможность объявлять тип возвращаемого значения. Аналогично объявлению типов аргументов можно задать тип значения, которое будет возвращаться функцией. Типы, которые можно объявить для возвращаемых значений те же, что и для аргументов фукнций.

Режим строгой типизации также работает для объявлении типа возвращаемого значения. В обычном режиме слабой типизации возвращаемое из функции значение приводится к корректному типу. При строгой типизации возвращаемое значение должно быть заданного типа, иначе будет выброшено исключение TypeError.

Замечание:

Если переопределяется родительский метод, возвращаемое значение дочернего метода должно быть того же типа, что и родительского. Если в родительском методе не задан тип возвращаемого значения, то и дочерний метод этот тип может не объявлять.

Примеры

Пример #4 Обычное объявление типа возвращаемого значения

// Будет возвращаться значение типа float.
var_dump ( sum ( 1 , 2 ));
?>

Результат выполнения данного примера:

Пример #5 То же в режиме строгой типизации

function sum ( $a , $b ): int return $a + $b ;
>

var_dump ( sum ( 1 , 2 ));
var_dump ( sum ( 1 , 2.5 ));
?>

Результат выполнения данного примера:

int(3) Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5 Stack trace: #0 -(9): sum(1, 2.5) #1 thrown in - on line 5

Пример #6 Возврат объектов

function getC (): C return new C ;
>

Результат выполнения данного примера:

Источник

Php method with return

return returns program control to the calling module. Execution resumes at the expression following the called module’s invocation.

If called from within a function, the return statement immediately ends execution of the current function, and returns its argument as the value of the function call. return also ends the execution of an eval() statement or script file.

If called from the global scope, then execution of the current script file is ended. If the current script file was include d or require d, then control is passed back to the calling file. Furthermore, if the current script file was include d, then the value given to return will be returned as the value of the include call. If return is called from within the main script file, then script execution ends. If the current script file was named by the auto_prepend_file or auto_append_file configuration options in php.ini , then that script file’s execution is ended.

Note: Note that since return is a language construct and not a function, the parentheses surrounding its argument are not required and their use is discouraged.

Note: If no parameter is supplied, then the parentheses must be omitted and null will be returned. Calling return with parentheses but with no arguments will result in a parse error.

As of PHP 7.1.0, return statements without an argument in functions which declare a return type trigger E_COMPILE_ERROR , unless the return type is void , in which case return statements with an argument trigger that error.

Источник

Читайте также:  Python for if в одну строку
Оцените статью