# Язык PHP. **PHP** - серверный язык программирования, он отвечает за **бэкенд** - часть продукта, которую не видит пользователь. Например, когда покупатель нажимает кнопку «Оформить заказ», появляется сообщение, что оплата прошла и заказ начали собирать. Для этого сайт отправляет запросы разным сервисам: базе данных - она подтвердит наличие информации о пользователе, платёжным шлюзам - они вернут от банка ответ об оплате, сервису логистики - он сообщит, что товар есть на складе. Эта невидимая для пользователя работа может быть реализована с помощью кода, написанного на PHP. ## **PHP в проектах отвечает за:** * Лендинги и блоги. Позволяет создавать контент и управлять им: публиковать и редактировать статьи, изображения и комментарии; * Интернет-магазины, онлайн-платформы для продажи товаров и услуг. РНР позволяет сделать так, чтобы можно было добавлять товары в корзину, оформлять заказы и обрабатывать платежи; * Социальные сети. РНР отвечает за авторизацию, обмен сообщениями, создание профилей и управление контентом пользователей; * Веб-приложения. Например, для CRM-системы с помощью PHP можно создать виджет для добавления контакта пользователя; * Системы управления контентом. Например, на PHP написана платформа Wordpress. ## **Возможности PHP.** Чаще всего PHP используют для написания скриптов, которые работают на стороне сервера. Это позволяет обрабатывать данные форм, которые заполняет посетитель сайта, отсылать и принимать cookies и т. д. Рассмотрим возможности языка: * Интеграция с базами данных. PHP совместим с большинством современных баз данных. * Разработка систем управления контентом. C помощью них можно добавлять и обновлять содержимое сайта без помощи разработчиков. PHP используют, чтобы расширять функциональность систем. * Создание изображений в форматах GIF, JPEG или PNG с помощью специальной библиотеки — GD. * Работа с FTP-серверами — приложениями, которые позволяют хранить и передавать файлы. С помощью PHP можно отправить изображения на сервер, загрузить обновлённый файл на сайт, удалить и переименовать его. С помощью PHP можно также изменить права доступа к учётным данным и этим обеспечить их безопасность. * Работа с cookie — файлами, которые собирают данные пользователей: количество посещений, переходы между страницами и т. д. Их часто используют маркетологи, чтобы идентифицировать посетителей сайта и создавать для них персонализированные предложения товаров и услуг. С помощью PHP можно легко считать cookie-файл из браузера. ## **Достоинства и недостатки.** Достоинства: * Простой, легко освоить даже новичку. * Много готовых фреймворков и библиотек — мало что придётся писать вручную. * Не нужны мощные сервера. ПО на PHP может работать на самом дешёвом оборудовании. * У языка PHP самый низкий показатель количества времени от начала разработки до выхода на рынок. Для бизнеса это выгодное решение. Недостатки: * Не поддерживает многопоточность и асинхронность, когда приложение обрабатывает одновременно несколько процессов. Например, проигрывает анимацию и обрабатывает данные, которые ввёл пользователь. * Достаточно уязвимый, поэтому, например, в банковской сфере его использовать не принято. ## **Свойства языка PHP.** * Объектно-ориентированный язык. Объекты — сущности, у которых есть данные и методы для работы с ними. Например, у объекта «книга» в библиотеке может быть название, автор и жанр, а также методы для вывода информации о ней. Данные объекта скрыты и доступны только через его методы. Это помогает обеспечить безопасность данных и уменьшить связанность между различными частями программы. ![Image](methodbook.png "") * Возможность интерпретации. РНР можно сразу запустить на большинстве платформ и операционных систем, не устанавливая отдельный компилятор, который запустит код. Это делает язык более доступным и простым для начинающих разработчиков. Недостатки: код обрабатывается на сервере построчно, затем результаты отправляются пользователю. Каждый раз, когда пользователь запрашивает страницу, сервер обрабатывает PHP-код заново. Это замедляет загрузку, особенно если код сложный. Но если его оптимизировать и настроить сервер, можно сделать сайт более быстрым. * Динамическая типизация. Переменные в PHP могут автоматически менять свой тип данных в процессе выполнения программы, в зависимости от того, какие данные им присваиваются. Представим, что переменная $x сначала содержит число, а потом текст: ![Image](sint.png "") С одной стороны, это удобно: не нужно явно указывать тип переменной при её объявлении и можно использовать одну и ту же переменную для различных типов данных в разное время. Но динамическая типизация может привести к ошибкам в коде. Например, если ожидается, что $x всегда будет числом, но он становится строкой. Это может вызвать ошибку или нестандартное поведение программы.