PHP современные возможности языка
info
- статья еще в процессе наполнения
PHP за последние годы изрядно "прокачался", синтаксис и конструкции языка стали более удобными и приятными.
Этот материал служит "шпаргалкой" по PHP для разработчиков и меня лично
Деструктуризация массивов #
PHP 7.1
/ Дока
Массивы в PHP могут деструктурироваться достаточно удобно, не так идеально как например в JS, но не стоит забывать что и в PHP есть возможности для такого синтаксиса:
// массивы в массиве
$posts = [[1, 2, 3, 4], [5, 6, 7]];
[$publishedPosts, $draftPosts] = $posts;
// или пропускаем первый
[, $draftPosts] = $posts;
// ассоциативные массивы
$post = [
'title' => 'Современный PHP',
'description' => 'описание возможностей',
'status' => 'Опубликовано'
];
['title' => $title, 'description' => $description] = $post;
Пример смены значений с помощью деструктуризации:
<?php
$a = 1;
$b = 2;
[$b, $a] = [$a, $b];
echo $a; // выведет 2
echo $b; // выведет 1
Разделитель для числовых значений #
PHP 7.4
Для написания длинных числовых значений есть возможность использовать подчеркивание _
для разделения
Пример:
$num = 1_000_000;
Поддерживаемые форматы:
1_000_000 // Десятичные
6.62_607_004e-34 // Экспоненциальная запись числа
0.300_000_000_000_000_04 // Значения с плавающей запятой
0b1111_0000_1001_1111_1001_0010_1010_1001 // Двоичные
0123_7264 // Восьмиричные
0xBEEF_BABE // Шестнадцатеричные
Распаковка массива оператором ... (Spread operator) #
PHP 7.4
Удобная конструкция для работы с массивами
$a = [1, 2];
$b = [...$a, 3, 4]; // [1, 2, 3, 4]
Стрелочные функции #
PHP 7.4
удобный синтаксис для написания анонимных функций(они же замыкания, они же Closure), как в JavaScript =)
$add = fn (int $a, int $b) => $a + $b;
$add(1,2); // 3
Именованные аргументы(параметры) #
PHP 8.0
До их появления мы писали так:
function calculatePrice(
$net = 0,
$raw = 0,
$taxes = 0
) {}
// а чтобы передать в функцию например только третий аргумент приходилось делать так
calculationPrice(
null,
null,
200
)
С приходом PHP8 передать значение можно по имени аргумента
calculationPrice(taxes: 200);
Объединение типов (Union types) #
PHP 8.0
В версии 7.4 мы получили возможность типизации в PHP. С версии PHP 8.0, мы можем объявлять более одного типа для аргументов, возвращаемых типов и свойств класса:
class Example {
private int|float $foo;
public function sum(float|int $bar): int|float {
return $this->foo + $bar;
}
}