Что нового в PHP 7, PHP 8?php-95

PHP 7.x Серия

1. Производительность

  • Движок Zend Engine 3.0: 2x прирост скорости против PHP 5.6
  • Оптимизация потребления памяти

2. Скалярные типы

function sum(int $a, int $b): int {
    return $a + $b;
}
  • Режимы строго (declare(strict_types=1)) и нестрогого типизирования

3. Оператор объединения с null

$username = $_GET['user'] ?? 'anonymous';

4. Космический корабль

usort($array, fn($a, $b) => $a <=> $b);

5. Генераторы с возвратом

function gen() {
    yield 1;
    return "done";
}

6. Ожидания

assert($age > 18, "User must be adult");

PHP 8.x Серия

1. JIT-компиляция

  • До 3x ускорение для CPU-intensive задач
; php.ini
opcache.jit_buffer_size=100M
opcache.jit=tracing

2. Атрибуты

#[Route("/api/posts", methods: ["GET"])]
class PostController {}

3. Конструктор свойства

class User {
    public function __construct(
        public string $name,
        protected int $age
    ) {}
}

4. Match-выражение

$result = match($statusCode) {
    200, 201 => 'success',
    404 => 'not found',
    default => 'unknown'
};

5. Nullsafe-оператор

$country = $user?->getAddress()?->country;

6. Именованные аргументы

array_fill(start_index: 0, num: 5, value: 50);

7. Фиберы

  • Легковесные кооперативные потоки

8. Readonly-свойства

class BlogPost {
    public readonly string $title;
}

9. Перечисления

enum Status: string {
    case DRAFT = 'draft';
    case PUBLISHED = 'published';
}

10. Деструктуризация массивов

$data = ["name" => "John", "age" => 25];
["name" => $username, "age" => $userAge] = $data;

Резюмируем:

PHP 7 принес революционную производительность и базовую типизацию, тогда как PHP 8 сосредоточился на выразительности кода, безопасности типов и экосистемных улучшениях. Переход на PHP 8.x особенно важен для современных веб-приложений.