PHP

Эта статья входит в число готовых статей
Эта статья прошла проверку экспертом
Материал из «Знание.Вики»
PHP
Логотип программы
Тип язык программирования
Автор Лердорф Расмус
Разработчики Лердорф Расмус, Энди Гутманс, Зеев Сураски, PHP Group
Операционная система Unix-подобная операционная система, Microsoft Windows
Первый выпуск 8 июня 1995
Последняя версия 8.2.3 (14 февраля 2023)
Состояние активное
Лицензия PHP License
Сайт https://www.php.net

PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста») — это язык сценариев с синтаксисом, заимствованным из C и Perl, который в основном используется для создания динамических веб-страниц или веб-приложений. PHP распространяется как свободное программное обеспечение под лицензией PHP. PHP поддерживает базы данных и подключается к интернет-протоколам, а также предоставляет множество функциональных библиотек.

История

Расмус Лердорф

С момента публикации в 1995 году разработчики внесли значительные изменения в язык php. Ядро языка было полностью перестроено в версии PHP 3.

PHP 1 (Personal Home Page Tools)

PHP был разработан Расмусом Лердорфом в 1995 году.[1] В то время этот термин все еще обозначал инструменты для персональной домашней страницы и первоначально задумывался как замена набора сценариев Perl, написанных Лердорфом для регистрации обращений к его онлайн-резюме.

PHP / FI (PHP 2)

Лердорф создал более обширную версию на языке программирования C, на котором PHP разрабатывается и по сей день.[2] Наконец-то выпущенный PHP / FI (FI означает интерпретатор форм) был очень похож на Perl, хотя и более ограничен.

PHP 3

Энди Гутманс и Зеев Сураски в 1997 году переписали PHP 3. По их мнению, выпущенный к настоящему времени код PHP / F2 был неадекватным для электронной коммерции. Теперь Лердорф сотрудничал с Гутом и Сураски, и поэтому разработку PHP / FI он прекратил. По мнению разработчиков, версия PHP 3 значительно продвинула в распространении языка веб-скриптов PHP.

PHP 4

Компания Zend Technologies Ltd., основанная Гутмансом и Сураски, впоследствии разработала Zend Engine 1[3], который лежит в основе реализации стандарта PHP 4. PHP 4 улучшил скорость выполнения сложных приложений и безопасность при использовании глобальных переменных[4]. Также были представлены поддержка многих других веб-серверов, управление сеансами и буферизация вывода, а также ряд новых языковых конструкций.

В конце 1990-х годов Всемирная паутина значительно расширилась, и возникла острая необходимость в языке сценариев для создания динамических веб-страниц. PHP стал более популярным для веб-разработки, чем предыдущий стандарт Perl. Его специализация делала его более простым в освоении. С 2008 года разработка и поддержка PHP 4 была прекращена.[5]

PHP 5

Летом 2004 года был выпущен еще один этап разработки — версия 5.0[6]. Ключевым отличием от предшественника является Zend Engine II, который, прежде всего, использует улучшенную объектную модель, что позволяет объектно-ориентированным приложениям работать более эффективно и допускать такие языковые конструкции, как перегрузка. К этому добавляется интеграция с базой данных SQLite, а также расширения при обработке XML и DOM. В 2011 году разработчики решили объединить то, что, по их словам, было хаотичным процессом выпуска. В соответствии с этим, новые версии должны выпускаться регулярно, а поддержка старых версий должна гарантироваться в фиксированный период времени.

Последней веткой стала версия PHP 5.6, в которой увеличена скорость работа на 15-20 %[7], введено пространство имен, лямбда-функции и замыкания, добавление расширений: intl, phar, fileinfo и sqlite, прекращение поддержки версий операционных систем Windows 95, 98, NT 4.0, 2000.

PHP 6

Разработки этой версии, которые велись с 2006 года были прекращены в 2010 году из-за сложностей с поддержкой Юникода.[8]

PHP 7

PHP 7 имеет на 30 процентов меньшее время выполнения, чем PHP 5, из-за новой реализации хеш-таблиц[9]. Кроме того, благодаря различным изменениям в ядре PHP новая версия занимает меньше места на диске, чем PHP 5. Такие компоненты, как парсер, лексер и генератор байт-кода, также претерпели некоторые изменения. Версия 7.0 была выпущена 3 декабря 2015 года[10]. В декабре 2016 года был выпущен PHP 7.1. В декабре 2017 вышла версия 7.2, а в ноябре 2019 — версия 7.4.

PHP 8

PHP 8 была выпущена в конце ноября 2020 года[11]. Версия поддерживает современную компиляцию, которая повышает почти на 50 % производительность в микро-тестах.[12] Например, PHP 8 предоставляет расширение WeakRefs, которая обеспечивает ресурсосберегающую обработку объектов. Помимо этого, поддерживаются произвольные типы объединения.

Сроки поддержки PHP версий

Популярность языка

PHP был разработан как веб-ориентированный язык сценариев для шаблонов веб-документов.[13] Широкое распространение веб-сервера Apache и модуля расширения PHP обеспечивает недорогое и быстрое развертывание сред веб-приложений, в которых программное обеспечение может быть доставлено в виде простых исходных текстовых файлов быстро и просто готовым к запуску по стандартным протоколам, таким как SFTP.

Помимо того, постепенное расширение статических веб-документов (HTML) с помощью небольших вспомогательных функций и управляемых логических блоков позволяет легко приступить к веб-программированию на стороне сервера.

Технология работы

PHP — это система, которая обрабатывает PHP-код на стороне сервера. В этом случае исходный текст передается не напрямую в веб-браузер, а в интерпретатор на веб-сервере. После этого интерпретатор PHP передается в браузер. Обычно это HTML-документ, но с помощью PHP можно создавать файлы других типов, например изображения или PDF.

Чтобы иметь возможность запускать PHP-файл в контексте веб-приложения, требуется система, способная обрабатывать инструкции, содержащиеся в файле. Для работы нужен сервер с настроенной службой Apache или IIS. Комбинация Linux / Windows / macOS в качестве операционной системы, Apache в качестве веб-сервера, MySQL в качестве системы баз данных и PHP называется LAMP (для Linux), WAMP (для Windows) или MAMP (для Mac OS X).

Поскольку PHP обычно работает в среде веб-сервера, он также зависит от HTTP без сохранения состояния. Любая страница php загружается веб-сервером через интерпретатор. Более того, интерпретатор повторно обрабатывает исходный текст при каждом вызове. Это уменьшает время отклика сервера и увеличивает нагрузку на него. Чтобы бороться с этим, доступны различные кеши байт-кода, которые кэшируют версию программы, подготовленную к запуску, тем самым ускоряя доступ к этому файлу при следующем вызове, то есть после кэширования интерпретатор не запускается, а выдает уже сформированный результат.

Hello World !

Один из вариантов версии программы Hello World на PHP:

<?php

   echo 'Привет, мир!';

?>

Синтаксис

Встраивание в HTML

PHP легко встраивается в HTML разметку:

<html>
    <head>
       <title>Встривание PHP В HTML</title>
    </head>
<body>
    <?php echo '<p>Привет, мир!</p>'; ?>
</body>
</html>

IF ELSE

Пример if else. Здесь проверятся веб-браузер пользователя и выводится соотвествующий текст.

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
    <p>К сожалению, вы используете Internet Explorer</p>

<?php
} else {
?>

    <p>Вы, к счастью, не используете Internet Explorer</p>

<?php
}
?>

Включение файлов

Внешние файлы могут быть встроены в PHP-скрипт. Для этого есть четыре разных инструкции.

<?php
require 'pfad/datei.php';      // если файл не удается смонтировать, возникает ошибка
include 'pfad/datei.php';      // если файл не удается смонтировать, выводится предупреждение
require_once 'pfad/datei.php'; // привязывает файл только в том случае, если он не был смонтирован ранее
include_once 'pfad/datei.php'; //  встраивает файл только в том случае, если он ранее не был смонтирован
?>

Переменные

Переменные в PHP представлены знаком доллара с последующим именем переменной. Имя переменной чувствительно к региструю

<?php

$name = "Small cat";

?>

Константы

Константы — это идентификаторы (имена) простых значений. Имена констант чувствительны к регистру. По принятому соглашению, имена констант всегда пишутся в верхнем регистре.

<?php

define("COLOR", "RED");

?>

Типы данных

PHP является языком с динамической типизацией. Это значит, что тип данных переменной выводится во время выполнения, и в отличии от ряда других языков программирования в PHP не надо указывать перед переменной тип данных.

<?php

// Скалярные типы
$var = true;         // boolean
$num = 5;                 // integer
$float = 4.71;             // float
$string = 'foo';         // string

// Составные типы
$field= array('foo', 'bar');   // array
$object = new stdClass();      // object
$function = function () {      // callable
    echo 'Привет, мир!';
};

// Специальные типы данных
$resource = fopen("foo", "w"); // resource
$variable = NULL;              // NULL

?>

Популярные PHP — приложения

phpBB форум

Форумы: phpBB, IPB, vBulletin.

Веб-фреймворки: Laravel, Symfony, Zend Framework, CakePHP

Графические интерфейсы для управления базами данных: phpMyAdmin, Adminer

Системы управления контентом: MODx, Joomla, Bitrix, Wordpress, Evolution CMS, Drupal, PHP Nuke.

Система для интернет-магазинов: osCommerce, PrestaShop, OpenCart, Webasyst, Magento.

Примечания

  1. Гренландский программист (cоздатель PHP): «Ненавижу программирование. Но я люблю решать проблемы». Хабр.
  2. PHP: История PHP - Manual. www.php.net.
  3. Зеев Сураски: Будущее Zend Engine и Zend Framework. itnan.ru.
  4. Как мы сделали PHP 7 в два раза быстрее PHP 5. Часть 1: оптимизация структур данных. Хабр.
  5. PHP4 прекратит существование в 2008 году. CNews.ru.
  6. PHP исполнилось 20 лет. www.linux.org.ru.
  7. Сравнение производительности версий PHP. www.pvsm.ru.
  8. Mattias Geniar. PHP 6: The Missing Version Number (англ.). ma.ttias.be (18 января 2015).
  9. Новая реализация Hashtable и улучшения производительности в PHP 7 - Русские Блоги. russianblogs.com.
  10. Что нового в PHP 7. WordPress как на ладони.
  11. Василий Сычев. Разработчики выпустили восьмую версию языка программирования PHP. N + 1 — главное издание о науке, технике и технологиях.
  12. PHP 7.4 vs. PHP 8.0a. bolknote.ru.
  13. Чем так хорош язык веб-разработки PHP. webformyself.com.