Типизация возвращаемых значений

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

В этом модуле вы освоите типизацию возвращаемых значений функций в PHP. Эта возможность позволяет явно указывать, какой тип данных должна вернуть функция, что делает код более предсказуемым и защищенным от ошибок. Вы научитесь объявлять скалярные типы (int, string, float, bool), работать с nullable-типами когда функция может вернуть значение или null, использовать union-типы для нескольких допустимых вариантов, а также разберетесь с void и mixed. Особое внимание уделим строгой типизации через strict_types, которая заставляет PHP не выполнять автоматическое преобразование типов. Задания построены от базовых примеров к более сложным сценариям, включая обработку ошибок типизации и комбинирование разных подходов. Вы будете заполнять пропуски в объявлениях, исправлять ошибки, предсказывать результаты выполнения и собирать корректные конструкции из частей.

Список тем

Базовое объявление типа возвращаемого значения

id: 38993_task1

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

Заполните пропуски
<?php
function multiply($a, $b)input1S int
{
    return $a input2S $b;
}

echo multiply(5, 3);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Исправьте несоответствие типа

id: 38993_task2

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

Найдите ошибку и исправьте
<?php
function getCount(): string
{
    return 42;
}
 
echo getCount();
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что вернет функция с float типом?

id: 38993_task3

Функция объявлена с возвращаемым типом float. Определите, что она вернет при данных аргументах.

Выберите правильный вариант ответа
<?php
function divide($a, $b): float
{
    return $a / $b;
}

echo divide(10, 4);
Сообщения
Проверить
Показать подсказку

Nullable тип возвращаемого значения

id: 38993_task4

Функция может вернуть строку или null, если пользователь не найден. Используйте nullable-тип для объявления.

Заполните пропуски
<?php
function findUser($id)input1S string
{
    if ($id === 1) {
        return "Alice";
    }
    return input2S;
}

var_dump(findUser(5));
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Результат функции с bool типом

id: 38993_task5

Функция проверяет, является ли число четным, и возвращает булево значение. Определите результат для числа 7.

Что должно получиться?
<?php
function isEven($number): bool
{
    return $number % 2 === 0;
}

var_dump(isEven(7));
Сообщения
Проверить
Показать подсказку

Сопоставьте типы с их назначением

id: 38993_task6

Свяжите типы возвращаемых значений с их описанием. Расположите правую колонку в соответствии с левой.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Функция ничего не возвращает
Функция никогда не завершится нормально
Функция может вернуть любой тип
Функция возвращает массив
: never
: void
: array
: mixed
Сообщения
Проверить
Показать подсказку

Соберите функцию с правильной типизацией

id: 38993_task7

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

Нужно правильно расставить в пропуски предложенные варианты
<?php
function sum(input1S $a, input2S $b)input3S input4S
{
    return $a input5S $b;
}

echo sum(15, 25);
int
int
:
int
+
string
float
-
*
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Ошибка в strict_types режиме

id: 38993_task8

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

Найдите ошибку и исправьте
<?php
declare(strict_types=1);
 
function getAge(): int
{
    return "25";
}
 
echo getAge();
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите функцию с union-типом

id: 38993_task9

Создайте функцию, которая может вернуть либо целое число, либо строку с сообщением об ошибке. Используйте union-тип int|string.

Перетяните в правильном порядке строки из одного блока в другой
<?php
function process($value): int|string
{
    if (is_numeric($value)) {
        return (int)$value;
    }
    return "Ошибка: не число";
}
 
echo process("42");
?>
return $value;
function process($value): int
echo process(42);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что выведет void функция?

id: 38993_task10

Функция объявлена с типом void и явно не возвращает значение. Что выведет код?

Выберите правильный вариант ответа
<?php
function greet(): void
{
    echo "Hello";
}

$result = greet();
var_dump($result);
Сообщения
Проверить
Показать подсказку

Использование mixed типа

id: 38993_task11

Функция должна принимать и возвращать значения любого типа. Укажите тип mixed для параметра и возвращаемого значения.

Заполните пропуски
<?php
function identity(input1S $value): input2S
{
    return $value;
}

var_dump(identity(100));
var_dump(identity("text"));
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Результат функции с array типом

id: 38993_task12

Функция с типом array возвращает массив строк. Определите, что выведет count() для результата функции.

Что должно получиться?
<?php
function getTags(): array
{
    return ["php", "web", "backend"];
}

echo count(getTags());
Сообщения
Проверить
Показать подсказку

Исправьте несоответствие с nullable типом

id: 38993_task13

Функция объявлена с типом int, но может вернуть null. Исправьте объявление типа, чтобы разрешить возврат null.

Найдите ошибку и исправьте
<?php
function findIndex($array, $value): int
{
    $index = array_search($value, $array);
    if ($index === false) {
        return null;
    }
    return $index;
}
 
$result = findIndex([10, 20, 30], 50);
var_dump($result);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите функцию с комплексной типизацией

id: 38993_task14

Создайте функцию calculate, которая принимает два float и строку-операцию, возвращает float или null при неизвестной операции. Функция должна обработать операции сложения и вычитания.

Перетяните в правильном порядке строки из одного блока в другой
<?php
function calculate(float $a, float $b, string $op): ?float
{
    if ($op === "add") {
        return $a + $b;
    } elseif ($op === "sub") {
        return $a - $b;
    }
    return null;
}
echo calculate(10.5, 3.2, "add");
?>
return $a * $b;
function calculate($a, $b, $op): float
if ($op == "add") {
echo calculate(10, 5, "multiply");
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Строгая типизация и преобразование

id: 38993_task15

При включенном strict_types функция вызывается с аргументом неправильного типа. Что произойдет?

Выберите правильный вариант ответа
<?php
declare(strict_types=1);

function double(int $n): int
{
    return $n * 2;
}

echo double("10");
Сообщения
Проверить
Показать подсказку
🚀 Визуализатор кода
0 / 0
Скорость:
Режим:
💡 Что происходит?
Загрузите пример для начала...
🤔
Проверка знаний
История шагов
Готов
НайтиКурс.Ру