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.
WLW Checked Off icon.svg Данная статья имеет статус «готовой». Это не говорит о качестве статьи, однако в ней уже в достаточной степени раскрыта основная тема. Если вы хотите улучшить статью — правьте смело!