Аббревиатура PHP расшифровывается как «PHP Hypertext Preprocessor», в названии заложена рекурсия, но изначально язык назывался проще — «Personal Home Page Tools».
Язык появился в середине 90-х годов 20-го века, является серверным языком программирования общего назначения, преимущественно используемый в веб-разработке.
Изначально PHP был создан для работы с веб-страницами, а конкретнее — для вывода на статических html-страницах динамических данных: результатов выполнения функций, данных полученных из базы данных и т.д.
В настоящее время основной областью применения PHP остаются веб-технологии:
- фреймворки (например Laravel, Symfony, Yii)
- СMS (например, WordPress, Drupal, Joomla)
- веб-сервисы SaaS
- API для фронтенда, мобильных приложений
- динамические веб-страницы,
- консольные CLI-утилиты (например, Deployer, Composer)
Основные особенности языка:
- язык является интерпретируемым, но начиная с версии 8.0 у него появился JIT-компилятор
- выполнение на сервере, хотя, к слову, технология WebAssembly позволяет выполнять код PHP в браузере, но этот подход имеет узкую специализацию, в основном для
создания онлайн-песочниц - нет нативной реализации EventLoop из коробки для реализации асинхронности, но решается через сторонние библиотеки, например, ReactPHP, Swoole
- нет многопоточности из коробки, как у Java или Golang, решается через расширения, например, parallel
- в традиционном использовании 1 http-запрос = 1 процесс, решается через менеджер процессов PHP-FPM
- слабая типизация, но начиная с 7-й версии появилась возможность установить режим строгой типизации
Сильные стороны языка:
- OPCache — in-memory хранилище байт-кода. Код приложения преобразовывается интерпретатором в инструкции для виртуальной машины Zend (байт-код, опкод),
сохраняется в памяти и при последующих запусках Zend сразу берет готовый байт-код, минуя этапы чтения и преобразования кода приложения.
Начиная с версии 5.5 входит в ядро, но для работы необходимо установить опцию в файле php.ini - JIT-компилятор. Работает поверх OPCache, преобразовывает байт-код в машинные инструкции для процессора.
- Composer. Менеджер пакетов, сторонняя утилита, позволяет устанавливать в проект пакеты, контролирует зависимости и многое другое.
- PSR. Набор стандартов для разработчиков, делающий код проектов удобным для поддержки и использования.
Области, где PHP не является оптимальным выбором: асинхронные операции, хайлоад, обработка больших объемов данных, но многие проблемы языка можно
современными решениями.