Так как самое важное в статье - это код, то рекомендуем прочитать статью на нашем сайте с удобным форматированием кода
PHP — это популярный серверный язык сценариев, используемый для создания динамических веб-сайтов и веб-приложений. Он постоянно развивается, регулярно выпускаются новые версии для устранения ошибок и добавления новых функций.
PHP 7 был выпущен в декабре 2015 года и принес несколько значительных улучшений производительности, благодаря чему приложения PHP работали до 2 раз быстрее, чем в предыдущих версиях. Он также добавил новые функции, такие как объявления типа возвращаемого значения и оператор космического корабля.
С другой стороны, PHP 8 был выпущен в ноябре 2020 года и принес ряд новых функций, улучшений производительности и исправлений ошибок. Некоторые из наиболее заметных изменений в PHP 8 включают в себя:
- Компиляция JIT (Just-In-Time): PHP 8 представляет JIT, новый механизм компиляции, который значительно повышает производительность PHP-кода, компилируя его в машинный код во время выполнения.
- Типы объединения: В PHP 8 представлены типы объединения, которые позволяют указать, что параметр функции или метода может принимать несколько типов значений. Например:function foo(int|float $value) {// $value может быть либо целым числом, либо числом с плавающей запятой}
- Именованные аргументы. В PHP 8 представлены именованные аргументы, которые позволяют передавать аргументы в функцию по имени, а не по положению. Например:function sendEmail(string $to, string $subject, string $message, bool $cc = false) {// ...}sendEmail($to: 'info@code-culture.ru', $subject: 'Important message', $message: 'Hello, Alex!');
- Выражения сопоставления: в PHP 8 представлены выражения сопоставления, новая структура управления, похожая на операторы switch, которая позволяет вам писать более краткий и читаемый код. Например:$value = 3;$result = match ($value) {1 => 'one',2 => 'two',3 => 'three',default => 'other',};echo $result; // outputs 'three'
- Оператор Nullsafe: PHP 8 представляет оператор nullsafe, новое сокращение для проверки существования свойства или метода объекта перед доступом к нему. Например:$person = new Person();$email = $person?->getEmail(); // вернет null если $person is null
- Синтаксис атрибутов: PHP 8 представляет синтаксис атрибутов, новый способ аннотирования кода метаданными. Атрибуты можно использовать для предоставления дополнительной информации о классах, методах, свойствах и других элементах кода. Например:#[Route('/users/{id}', methods: ['GET'])]class UserController {#[Route('/')]public function index() {// ...}}
- Продвижение свойств конструктора: PHP 8 представляет продвижение свойств конструктора, новый синтаксис, который позволяет вам объявлять и инициализировать свойства класса в одной строке кода. Например://Вот так это было бы в PHP7class User {private string $name;public function __construct(string $name) {public function __construct(private string $name) {$this->name = $name}}//Вот так стало возможно в PHP8class User {public function __construct(private string $name) {}}
- Ковариантные возвраты и контравариантные параметры. В PHP 8 представлены ковариантные возвраты и контравариантные параметры, которые позволяют ослабить или ужесточить ограничения типов методов класса при их переопределении или реализации. Например:class Shape {public function area(): float {return 0.0;}}class Circle extends Shape {private float $radius;public function __construct(float $radius) {$this->radius = $radius;}public function area(): float {return pi() * $this->radius ** 2;}}
- Weak Maps: PHP 8 представляет Weak Maps, новый тип структуры данных, который позволяет вам хранить ссылки на объекты в карте, не предотвращая их сборку мусора. Например:$map = new WeakMap();$object = new stdClass();$map[$object] = 42;unset($object);// $map is now empty
- Улучшенная обработка ошибок. В PHP 8 представлено несколько новых функций обработки ошибок и исключений, упрощающих написание надежного и поддерживаемого кода. Например, теперь можно перехватывать несколько типов исключений в одном блоке перехвата и создавать исключения из анонимных функций.
- Улучшенные строки: PHP 8 представляет несколько новых функций, связанных со строками, таких как улучшенные заполнители строкового формата и возможность использовать обратную косую черту в строковых литералах для указания управляющих символов, таких как \t и \n.
- Улучшенные массивы: PHP 8 представляет несколько новых функций, связанных с массивами, таких как возможность использования синтаксиса квадратных скобок для доступа к массивам и улучшенная поддержка деструктурирования массивов в переменные.
- Улучшенная система типов: PHP 8 представляет несколько новых функций системы типов, таких как улучшенное приведение типов и улучшенная поддержка обобщений и возвращаемых типов.
- Улучшенный Reflective API: PHP 8 представляет несколько новых функций Reflective API, таких как улучшенная поддержка доступа к информации о классах и методах, а также улучшенная поддержка использования Reflection API с расширениями PHP.
- Улучшенная стандартная библиотека: PHP 8 представляет несколько новых функций стандартной библиотеки, таких как улучшенная поддержка работы с потоками, сокетами и HTTP, а также улучшенная поддержка работы с датами, временем и часовыми поясами.
Это лишь некоторые из множества различий между PHP 7 и PHP 8. Независимо от того, являетесь ли вы опытным разработчиком PHP или только начинаете, в PHP 8 есть много новых интересных функций и улучшений, которыми вы можете начать пользоваться уже сегодня!
Узнать о последних обновлениях языка PHP можно на официальном сайте