Нововведення в php 7/8
Published: 13/03/25 by stsykalovskyi

PHP 7: Основні покращення
Випущений у 2015 році, PHP 7 значно підвищив продуктивність і додав важливі можливості.
1. Покращення продуктивності
-
Введений Zend Engine 3.0: покращена швидкість виконання коду, менше споживання пам’яті.
-
У 2 рази швидше за PHP 5.6 завдяки оптимізованому обробнику запитів.
2. Покращена типізація
-
Scalar Type Hints (скалярні підказки типів)
function add(int $a, int $b): int { return $a + $b; } echo add(2, 3); // 5
-
Strict Types (жорстка типізація)
declare(strict_types=1); // Увімкнення жорсткої типізації function multiply(int $x, int $y): int { return $x * $y; } echo multiply("2", "3"); // Fatal Error
3. Повернені типи функцій
-
Тепер можна явно вказати, який тип даних повертає функція.
function getName(): string {
return "Sergii";
}
4. Null Coalescing Operator (??)
-
Простий спосіб перевірки на
null
:$username = $_GET['user'] ?? 'Guest'; // Якщо user не існує, буде 'Guest'
5. Spaceship Operator (<=>)
-
Порівнює два значення:
echo 2 <=> 3; // -1
echo 3 <=> 3; // 0
echo 4 <=> 3; // 1
6. Анонімні класи
-
Зручні для швидкого створення об'єктів без іменованих класів:
$obj = new class {
public function sayHello() {
return "Hello!";
}
};
echo $obj->sayHello(); // "Hello!"
PHP 8: Основні нововведення
Випущений у 2020 році, PHP 8 значно покращив продуктивність, розширив систему типізації та додав зручніші інструменти для розробників.
1. Just-In-Time (JIT) Compiler
-
Значне покращення продуктивності: тепер PHP-код компілюється в машинний код, що дозволяє виконувати складні обчислення набагато швидше.
-
Приклад без JIT та з JIT
-
Без JIT: PHP-код інтерпретується під час виконання.
-
З JIT: код компілюється та кешується для швидкого виконання.
-
2. Union Types (об’єднані типи)
-
Дозволяє вказувати кілька типів для параметрів і повернень функцій:
function setAge(int|string $age): void {
echo "Age: $age";
}
setAge(25);
setAge("twenty-five"); // Тепер дозволено
3. Named Arguments (іменовані аргументи)
-
Дозволяє передавати аргументи за іменами, а не за позицією:
function greet(string $name, int $age) {
echo "Hello, $name! You are $age years old.";
}
greet(age: 30, name: "Sergii"); // Порядок не має значення
4. Attributes (Атрибути)
-
PHP 8 додає офіційну підтримку анотацій у вигляді атрибутів:
#[Route("/home")]
class HomeController {
#[Get]
public function index() {}
}
5. Match Expression (альтернатива switch)
-
Більш гнучка альтернатива
switch
, яка повертає значення.$status = 2;
$message = match ($status) {
1 => "Pending",
2 => "Approved",
3 => "Rejected",
default => "Unknown"
};
echo $message; // "Approved"
6. Nullsafe Operator (?->)
-
Полегшує роботу з
null
, замість перевіркиisset()
.$user = null;
$username = $user?->profile?->name; // Якщо $user або profile null, не буде помилки
7. Статичні повернені типи
-
Тепер можна використовувати
static
у повернених типах:class ParentClass {
public static function getInstance(): static {
return new static();
}
}
8. Constructor Property Promotion
-
Спрощує ініціалізацію властивостей у класах.
class User {
public function __construct(private string $name, private int $age) {}
}
9. Weak Maps (Слабкі мапи)
-
Дозволяють зберігати слабкі посилання на об’єкти без запобігання їх збору сміття.
$map = new WeakMap();
$obj = new stdClass();
$map[$obj] = "Data";
10. Fibers (PHP 8.1)
-
Дозволяють асинхронне виконання коду без використання потоків.
$fiber = new Fiber(function (): void {
echo "Start\n";
Fiber::suspend();
echo "End\n";
});
$fiber->start();
echo "Paused\n";
$fiber->resume();
Висновок
PHP 7 та 8 принесли значні покращення у продуктивності, типізації та читабельності коду. Основні нововведення:
PHP 7 |
PHP 8 |
---|---|
Scalar Type Hints |
JIT Compiler |
Return Types |
Union Types |
Null Coalescing ( |
Named Arguments |
Spaceship Operator ( |
Attributes |
Анонімні класи |
Match Expression |
Nullsafe Operator ( |
|
Constructor Property Promotion |
Category: Programming
Tags: interview php programming