Skip to main content
NewWebmaster.RU

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;
    }
}