PHP 7: Пользовательские функции. Декларация, вызов и возврат значений.
В php уже есть большое количество встроенных функций. Сегодня кратко о декларации и вызове пользовательских функций, аргументах функции, области видимости переменных тд.
Функция – это участок кода, который можно многократно выполнять в различных местах PHP скрипта когда нам это угодно. Чтобы функцию запустить на выполнение, необходимо её вызвать.
Декларация и вызов функции
// Декларация функции
<?php
function sayHello()
{
echo "<h1>Hello, world!</h1>";
}
// Вызов функции
sayHello();
Аргументы функции
function sayHello($name)
{
echo "<h1>Hello, $name!</h1>";
}
// Передаём литерал
sayHello("John"); // Hello, John!
// Передаём значение переменной
$name = "Mike";
sayHello($name); // Hello, Mike!
// Обращение к функции через переменную
$func = "sayHello";
$func("Guest"); // Hello, Guest!
$x = function ($name) {
echo "Hello, $name!".PHP_EOL;
};
$x('Donald'); // Hello, Donald!
// Аргументы по-умолчанию
function sayHello($name = "Guest")
{
echo "<h1>Hello, $name!</h1>";
}
sayHello("John"); // Hello, John!
sayHello(); // Hello, Guest!
Области видимости переменных
function sayHello($name)
{
echo "<h1>Hello, $name!</h1>";
$name = "Вася";
}
sayHello("John");
$name = "Mike";
sayHello($name);
echo$name;//???
//Обращение к глобальным переменным: вариант 1
function sayHello($name)
{
echo "<h1>Hello, $name!</h1>";
global $name;
$name = "Вася";
}
$name = "Mike";
sayHello($name);
echo$name;//Вася
//Обращение к глобальным переменным: вариант 2
function sayHello($name)
{
echo "<h1>Hello, $name!</h1>";
$GLOBALS["name"]= "Вася";
}
$name = "Mike";
sayHello($name);
echo$name;//Вася
//Обращение к глобальным переменным: вариант 3
function sayHello(&$name)
{
echo "<h1>Hello, $name!</h1>";
$name = "Вася";
}
$name = "Mike";
sayHello($name);
echo$name;//Вася
sayHello("John"); //ERROR!!!
Статические переменные
function test(){
$a = 0;
echo $a++;
}
test(); // 0
test(); // 0
test(); // 0
function test(){
static $a = 0;
echo $a++;
}
test(); // 0
test(); // 1
test(); // 2
Возвращаемые значения
function square($num) {
return $num * $num;
// Этот код никогда не исполнится
echo "Мертвый код";
}
echo square(4); // 16
$result= square(4);
// Возвращение массива
function numbers() {
return [1, 2, 3];
}
list($one, $two, $three) = numbers();
// Разыменовывание массива (PHP 5.4)
$two= numbers()[1];
Функция с переменным числом аргументов
foo(1, 2, 3);
function foo() {
$numargs = func_num_args();
echo "Всего аргументов: $numargs\n";
echo "Второй аргумент: " . func_get_arg(1) . "\n";
$args = func_get_args();
foreach ($args as $key => $value) {
echo "Аргумент$key : $value\n";
}
}
// PHP 5.6
function foo(...$nums) {
foreach ($nums as $key => $value) {
echo "Аргумент$key : $value\n";
}
}
// и
function sum($n1, $n2) {
return ($n1 + $n2;
}
sum(...[2, 5]);
Уточнение типа
function foo(array $var) {
// Ожидается только массив!
}
function mult($num) {
return $num * $num;
}
// PHP 5.4
function bar(callable $var, $arg) {
return $var($arg);
}
bar("mult", 4);
// PHP 7
function foo(int $i, string $s,bool $b,int ...$nums):bool {
return $b;
// Ожидается только массив!
}
// Включение строгой типизации
declare(strict_types=1);
Предыдущая запись
Основы PHP 7 Часть #2: Циклы и управление цикламиСледующая запись
PHP: Узнать расширение файла