Мови програмування

PHP

Серверна мова для вебу: на ній працюють WordPress, Laravel і значна частина інтернету.

Що це

PHP створив Расмус Лердорф у 1995 році як набір скриптів для власної сторінки. Сьогодні це повноцінна мова з класами, типами, атрибутами та JIT.

Модель виконання проста: кожен запит стартує з чистого стану, тому масштабування горизонтальне й передбачуване. Пакети беруться з Packagist через Composer.

Сучасний PHP (8.x) має сувору типізацію за бажанням, enum, readonly-властивості та named arguments. Найвідоміші фреймворки: Laravel і Symfony. WordPress, Drupal, Magento теж на PHP.

Коли брати

  • Сайти й вебзастосунки, особливо на Laravel чи Symfony.
  • Робота з WordPress, WooCommerce, Magento та іншими PHP-системами.
  • Дешевий і поширений хостинг: PHP підтримується майже всюди.

Коли не варто

  • Довготривалі процеси, вебсокети й real-time з великою конкурентністю: краще Node.js, Go, Elixir.
  • Не вебзадачі: десктоп, системне програмування, ML.

Ключові поняття

Composer
Менеджер залежностей, автозавантаження класів за PSR-4.
PHP-FPM
Пул процесів, який виконує PHP за nginx чи Apache.
Request lifecycle
Кожен запит виконується з нуля й не ділить стан із попереднім.
PSR
Стандарти спільноти (PHP-FIG): стиль коду, автозавантаження, інтерфейси.
Enums and types
У PHP 8 є enum, union-типи, readonly та constructor promotion.

Приклад

Enum і match у PHP 8.

Питання на співбесіді

  1. 1. Чим == відрізняється від === у PHP?

    == порівнює з приведенням типів, а === ще й вимагає однакового типу. У PHP 8 правила == для рядків і чисел стали суворішими, але === усе одно безпечніший.

  2. 2. Що таке Composer і PSR-4?

    Composer керує залежностями. PSR-4 це стандарт автозавантаження, що зіставляє простір імен із теками, тож не потрібні require для кожного класу.

  3. 3. Як PHP зберігає стан між запитами?

    Сам по собі не зберігає. Стан тримають у сесіях (файли, Redis), базі даних або кеші. Кожен запит починається з нуля.

  4. 4. Що нового в PHP 8?

    JIT, union-типи, named arguments, атрибути, match, nullsafe-оператор ?->, constructor promotion, а в 8.1 ще enum і readonly.

Логотипи належать їхнім власникам і використані лише для ідентифікації. Іконки: Simple Icons (CC0), Devicon (MIT).

Розділи платформи