В этом тренажере вы изучите именованные аргументы в PHP 8 - новую возможность, которая позволяет передавать значения в функцию по имени параметра, а не по порядку. Это делает код более читаемым и позволяет пропускать необязательные параметры. Выполните задания от простых к сложным, чтобы освоить эту функциональность.
- Модуль 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+
Базовый синтаксис именованных аргументов
Заполните пропуски в коде, чтобы использовать именованные аргументы при вызове функции.
function createUser(string $name, int $age, string $email) {
return "User: $name, Age: $age, Email: $email";
}
// Используйте именованные аргументы для вызова функции
$user = createUser(
input1S: "John",
input2S: 25,
input3S: "john@example.com"
);
echo $user;Порядок именованных аргументов
Что выведет код, в котором именованные аргументы переданы в разном порядке?
function calculateArea(float $width, float $height) {
return $width * $height;
}
// Вызываем функцию с аргументами в разном порядке
$area1 = calculateArea(width: 5, height: 10);
$area2 = calculateArea(height: 10, width: 5);
echo "Area1: $area1, Area2: $area2";Найдите ошибку в именованных аргументах
Найдите и исправьте ошибку в коде, который использует именованные аргументы.
<?phpfunction registerUser(string $username, string $password, bool $active = true) { return "User $username registered with status: " . ($active ? "active" : "inactive");} // Вызов функции с ошибкой $result = registerUser(user_name: "admin", pass: "secret123", active: false);echo $result;Пропуск необязательных параметров
Используйте именованные аргументы, чтобы пропустить необязательный параметр и задать только последний.
function sendEmail(string $to, string $subject, string $body, int $priority = 1, bool $urgent = false) {
return "Email sent to: $to, Subject: $subject, Priority: $priority, Urgent: " . ($urgent ? "Yes" : "No");
}
// Пропустите параметр priority и укажите только urgent
$result = sendEmail(
to: "user@example.com",
subject: "Important notice",
body: "Please read this message",
input1S: true
);
echo $result;Соберите функцию с именованными аргументами
Соберите код, который объявляет функцию и вызывает её с использованием именованных аргументов.
return $name . " is " . $age . " years old"; $person = getPersonInfo(age: 30, name: "Alice");function getPersonInfo(string $name, int $age) {echo $person;}<?phpecho "Simple function";Использование именованных аргументов с массивами
Заполните пропуски в коде, используя именованные аргументы для работы с массивами.
function processArray(array $data, bool $sort = false, int $limit = 10, string $key = null) {
if ($sort) {
sort($data);
}
if ($key !== null && isset($data[$key])) {
return $data[$key];
}
return array_slice($data, 0, $limit);
}
$sample = ['apple', 'banana', 'cherry', 'date', 'elderberry'];
// Используйте именованные аргументы для получения элемента по ключу
$result = processArray(
input1S: $sample,
input2S: 2
);
echo $result;Смешение позиционных и именованных аргументов
Определите, что выведет код, в котором смешиваются позиционные и именованные аргументы.
function createProduct(string $name, float $price, int $quantity, bool $available = true) {
$total = $price * $quantity;
$status = $available ? "Available" : "Out of stock";
return "$name: $status, Total: $$total";
}
// Смешиваем позиционные и именованные аргументы
$product = createProduct("Laptop", 999.99, quantity: 5);
echo $product;Сопоставление синтаксиса вызова функций
Сопоставьте способы вызова функций с их описаниями.
calculateArea(5, 10)calculateArea(width: 5, height: 10)calculateArea(5, height: 10)Именованные аргументы в конструкторах классов
Используйте именованные аргументы при создании объекта класса.
class User {
public function __construct(
public string $name,
public string $email,
public int $age,
public bool $active = true
) {}
public function getInfo(): string {
$status = $this->active ? "Active" : "Inactive";
return "$this->name ($this->email), Age: $this->age, Status: $status";
}
}
// Создайте объект с использованием именованных аргументов
$user = new User(
input1S: "john@example.com",
input2S: 30,
input3S: "John"
);
echo $user->getInfo();Ошибка при смешении аргументов
Найдите и исправьте ошибку в коде, где неправильно смешиваются позиционные и именованные аргументы.
<?phpfunction displayMessage(string $title, string $text, string $author, bool $published = false) { $status = $published ? "Published" : "Draft"; return "$title by $author: $text [$status]";} // Вызов функции с ошибкой $message = displayMessage("Notice", text: "Important update", "Admin");echo $message;Именованные аргументы и variadic-функции
Что выведет код, использующий именованные аргументы с variadic-функцией?
function processOrder(int $orderId, ...$items) {
$result = "Order #$orderId: ";
foreach ($items as $key => $value) {
$result .= "$key=$value ";
}
return trim($result);
}
// Вызов с именованными аргументами
$order = processOrder(1234, product: "Laptop", quantity: 2, price: 999.99);
echo $order;Восстановите порядок работы с именованными аргументами
Расположите строки в правильном порядке, чтобы создать функцию и вызвать её с именованными аргументами.
return "Rectangle with width $width and height $height has area: " . ($width * $height);echo $area; $area = calculateRectangle(height: 8, width: 5);function calculateRectangle(int $width, int $height) {<?php}// Вычисление площади прямоугольника