В этом модуле вы освоите типизацию возвращаемых значений функций в PHP. Эта возможность позволяет явно указывать, какой тип данных должна вернуть функция, что делает код более предсказуемым и защищенным от ошибок. Вы научитесь объявлять скалярные типы (int, string, float, bool), работать с nullable-типами когда функция может вернуть значение или null, использовать union-типы для нескольких допустимых вариантов, а также разберетесь с void и mixed. Особое внимание уделим строгой типизации через strict_types, которая заставляет PHP не выполнять автоматическое преобразование типов. Задания построены от базовых примеров к более сложным сценариям, включая обработку ошибок типизации и комбинирование разных подходов. Вы будете заполнять пропуски в объявлениях, исправлять ошибки, предсказывать результаты выполнения и собирать корректные конструкции из частей.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Базовое объявление типа возвращаемого значения
Функция должна возвращать целое число. Укажите правильный синтаксис объявления типа возвращаемого значения и верните результат умножения.
<?php
function multiply($a, $b)input1S int
{
return $a input2S $b;
}
echo multiply(5, 3);Исправьте несоответствие типа
Функция объявлена с типом возвращаемого значения string, но возвращает не строку. Найдите и исправьте строку с ошибкой.
<?phpfunction getCount(): string{ return 42;} echo getCount();Что вернет функция с float типом?
Функция объявлена с возвращаемым типом float. Определите, что она вернет при данных аргументах.
<?php
function divide($a, $b): float
{
return $a / $b;
}
echo divide(10, 4);Nullable тип возвращаемого значения
Функция может вернуть строку или null, если пользователь не найден. Используйте nullable-тип для объявления.
<?php
function findUser($id)input1S string
{
if ($id === 1) {
return "Alice";
}
return input2S;
}
var_dump(findUser(5));Результат функции с bool типом
Функция проверяет, является ли число четным, и возвращает булево значение. Определите результат для числа 7.
<?php
function isEven($number): bool
{
return $number % 2 === 0;
}
var_dump(isEven(7));Сопоставьте типы с их назначением
Свяжите типы возвращаемых значений с их описанием. Расположите правую колонку в соответствии с левой.
: never: void: array: mixedСоберите функцию с правильной типизацией
Используйте токены из банка для создания функции, которая принимает два целых числа и возвращает их сумму в виде целого числа.
<?php
function sum(input1S $a, input2S $b)input3S input4S
{
return $a input5S $b;
}
echo sum(15, 25);Ошибка в strict_types режиме
Код использует строгую типизацию, но функция возвращает неправильный тип. Найдите и исправьте ошибку.
<?phpdeclare(strict_types=1); function getAge(): int{ return "25";} echo getAge();Соберите функцию с union-типом
Создайте функцию, которая может вернуть либо целое число, либо строку с сообщением об ошибке. Используйте union-тип int|string.
<?phpfunction process($value): int|string{ if (is_numeric($value)) { return (int)$value; } return "Ошибка: не число";} echo process("42");?>return $value;function process($value): intecho process(42);Что выведет void функция?
Функция объявлена с типом void и явно не возвращает значение. Что выведет код?
<?php
function greet(): void
{
echo "Hello";
}
$result = greet();
var_dump($result);Использование mixed типа
Функция должна принимать и возвращать значения любого типа. Укажите тип mixed для параметра и возвращаемого значения.
<?php
function identity(input1S $value): input2S
{
return $value;
}
var_dump(identity(100));
var_dump(identity("text"));Результат функции с array типом
Функция с типом array возвращает массив строк. Определите, что выведет count() для результата функции.
<?php
function getTags(): array
{
return ["php", "web", "backend"];
}
echo count(getTags());Исправьте несоответствие с nullable типом
Функция объявлена с типом int, но может вернуть null. Исправьте объявление типа, чтобы разрешить возврат null.
<?phpfunction 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);Соберите функцию с комплексной типизацией
Создайте функцию calculate, которая принимает два float и строку-операцию, возвращает float или null при неизвестной операции. Функция должна обработать операции сложения и вычитания.
<?phpfunction 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): floatif ($op == "add") {echo calculate(10, 5, "multiply");Строгая типизация и преобразование
При включенном strict_types функция вызывается с аргументом неправильного типа. Что произойдет?
<?php
declare(strict_types=1);
function double(int $n): int
{
return $n * 2;
}
echo double("10");