~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 1C3BC46B952FED096B3D9883CB4ED25E__1718057820 ✰
Заголовок документа оригинал.:
✰ PHP - Wikipedia ✰
Заголовок документа перевод.:
✰ PHP — Википедия, бесплатная энциклопедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/PHP ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/1c/5e/1c3bc46b952fed096b3d9883cb4ed25e.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/1c/5e/1c3bc46b952fed096b3d9883cb4ed25e__translat.html ✰
Дата и время сохранения документа:
✰ 11.06.2024 06:12:18 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 11 June 2024, at 01:17 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

PHP — Википедия, бесплатная энциклопедия Jump to content

PHP

Послушайте эту статью
Из Википедии, бесплатной энциклопедии
PHP
Парадигма Мультипарадигмальность : императивная , функциональная , объектно-ориентированная , процедурная , рефлексивная.
Разработано Расмус Лердорф
Разработчик Команда разработчиков PHP , Zend Technologies , PHP Foundation
Впервые появился 8 июня 1995 г .; 29 лет назад ( 1995-06-08 ) [1] [2]
Стабильная версия
8.3.8 / 6 июня 2024 г .; 5 дней назад ( 06.06.2024 ) [3]
Дисциплина набора текста Динамичный , слабый , постепенный [4]
Язык реализации C (в основном; некоторые компоненты C++ )
ТЫ Unix-подобные , Windows , macOS , IBM i , OpenVMS , IBM Z
Лицензия двойная лицензия GNU General Public License версии 2 или любой более поздней версии и лицензия PHP для PHP версии 3.0 или более ранней. [5] Только лицензия PHP (большая часть движка Zend находится под лицензией Zend Engine License ) для версий 3.01x и более поздних.
Расширения имен файлов .php, .phar, .phtml, .pht, .phps
Веб-сайт www .php .сеть Отредактируйте это в Викиданных
Основные реализации
Zend Engine , HHVM , PeachPie , Quercus , Parrot
Под влиянием
Перл , С , С++ , Java , [6] ТКЛ , [2] JavaScript [7]
Под влиянием
Взлом , JSP , ASP , React JS

PHP — это общего назначения, язык сценариев предназначенный для веб-разработки . [8] Первоначально он был создан датско-канадским программистом Расмусом Лердорфом в 1993 году и выпущен в 1995 году. [9] [10] PHP Эталонная реализация теперь производится PHP Group. [11] Изначально PHP был аббревиатурой Personal Home Page . [12] [13] но теперь это означает рекурсивный инициализм PHP: Hypertext Preprocessor . [14]

Код PHP обычно обрабатывается на веб-сервере PHP, интерпретатором реализованным в виде модуля , демона или исполняемого файла Common Gateway Interface (CGI). На веб-сервере результат интерпретированного и выполненного PHP-кода, который может быть любым типом данных, например, сгенерированными данными HTML или двоичными изображениями, будет формировать весь или часть HTTP- ответа. Существуют различные системы веб-шаблонов , системы управления веб-контентом и веб-фреймворки , которые можно использовать для организации или облегчения генерации такого ответа. Кроме того, PHP можно использовать для многих задач программирования вне веб-контекста, например для создания автономных графических приложений. [15] и управление дроном . [16] PHP-код также может быть выполнен непосредственно из командной строки .

Стандартный интерпретатор PHP, работающий на базе Zend Engine , является бесплатным программным обеспечением , распространяемым по лицензии PHP . PHP широко портирован и может быть развернут на большинстве веб-серверов в различных операционных системах и платформах . [17]

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

W3Techs сообщает, что по состоянию на 23 марта 2024 г. (через четыре месяца после выпуска PHP 8.3) PHP используется на 76,4% всех веб-сайтов, язык программирования которых можно определить, а 57,2% из них используют PHP 7, который устарел и известен как небезопасный. [ не удалось пройти проверку ] [18]

История [ править ]

Ранняя история [ править ]

Разработка PHP началась в 1993 году. [9] когда Расмус Лердорф написал несколько программ Common Gateway Interface (CGI) на C , [19] [20] который он использовал для поддержания своей личной домашней страницы . Он расширил их для работы с веб-формами и взаимодействия с базами данных и назвал эту реализацию «персональной домашней страницей/интерпретатором форм» или PHP/FI.

Пример раннего синтаксиса PHP : [21]

<!--  включить   /  текст  /  заголовок  .   html  --> 

 <!--  getenv   HTTP_USER_AGENT  --> 
 !--  if   substr   $exec_result   Mozilla  --> 
   Эй  ,   вы   используете   Netscape   <  !<  p  > 
 <!--  endif  --> 

 <!--  sql   базы данных   выбор   *   из   таблицы   где   user  =  '$username'  --> 
 <!--  ifless   $numentries   1  --> 
   Извините  ,   эта   запись   не   существует   ,  <  p  > 
 <!--  endif   выход  --> 
   Добро пожаловать   <!--  $user  -->!<  p  > 
   <   --   index  :  0  --  >   кредитов   На вашем счету осталось   !   >   $  .<  p  < ! 

 --  include   /  text  /  footer  .   html  --> 

PHP/FI можно использовать для создания простых динамических веб-приложений . Чтобы ускорить сообщение об ошибках и улучшить код, Лердорф первоначально объявил о выпуске PHP/FI как «Инструменты личной домашней страницы (PHP Tools) версии 1.0» в Usenet дискуссионной группе comp.infosystems.www.authoring.cgi 8 июня 1995 года. [1] [22] Этот выпуск включал базовые функции, такие как Perl-подобные переменные , обработку форм и возможность встраивания HTML . К этому моменту синтаксис изменился и стал напоминать синтаксис Perl , но стал более простым, более ограниченным и менее последовательным. [12] [11]

Ранний PHP никогда не задумывался как новый язык программирования ; скорее, он разрастался органично, и Лердорф, оглядываясь назад, заметил: «Я не знаю, как это остановить [...] никогда не было никакого намерения писать язык программирования [...] Я совершенно понятия не имею, как писать язык программирования [...] Я просто продолжал добавлять следующий логический шаг на пути». [23] Команда разработчиков начала формироваться и после нескольких месяцев работы и бета -тестирования официально выпустила PHP/FI 2 в ноябре 1997 года. [24]

Тот факт, что PHP изначально не был спроектирован, а был разработан органично, привел к непоследовательному именованию функций и непоследовательному порядку их параметров. [25] В некоторых случаях имена функций выбирались так, чтобы они соответствовали библиотекам нижнего уровня, которые PHP «обертывал». [26] в то время как в некоторых очень ранних версиях PHP длина имен функций использовалась внутри как хеш-функция , поэтому имена были выбраны для улучшения распределения хеш-значений . [27]

PHP 3 и 4 [ править ]

Это пример PHP-кода для WordPress системы управления контентом .

Зеев Сураски и Энди Гутманс переписали парсер в 1997 году и легли в основу PHP 3, изменив название языка на рекурсивную аббревиатуру PHP: Hypertext Preprocessor . [11] [28] После этого началось публичное тестирование PHP 3, и официальный запуск состоялся в июне 1998 года. Затем Сураски и Гутманс начали новую переписывание ядра PHP, выпустив Zend Engine в 1999 году. [29] Они также основали компанию Zend Technologies в Рамат-Гане , Израиль . [11]

22 мая 2000 года был выпущен PHP 4 на базе Zend Engine 1.0. [11] К августу 2008 года эта ветка достигла версии 4.4.9. PHP 4 больше не находится в разработке, и выпуск каких-либо обновлений безопасности не планируется. [30] [31]

PHP 5 [ править ]

1 июля 2004 года был выпущен PHP 5 на базе нового Zend Engine II. [11] PHP 5 включал новые функции, такие как улучшенная поддержка объектно-ориентированного программирования , расширение PHP Data Objects (PDO) (которое определяет легкий и согласованный интерфейс для доступа к базам данных), а также многочисленные улучшения производительности. [32] В 2008 году PHP 5 стал единственной стабильной версией, находящейся в стадии разработки. Позднее статическое связывание отсутствовало в предыдущих версиях PHP и было добавлено в версии 5.3. [33] [34]

Многие громкие проекты с открытым исходным кодом прекратили поддержку PHP 4 в новом коде с 5 февраля 2008 года из-за инициативы GoPHP5. [35] предоставлен консорциумом разработчиков PHP, продвигающим переход с PHP 4 на PHP 5. [36] [37]

Со временем интерпретаторы PHP стали доступны в большинстве существующих 32- и 64-битных операционных систем либо путем их создания из исходного кода PHP, либо с использованием предварительно созданных двоичных файлов. [38] Для версий PHP 5.3 и 5.4 единственными доступными двоичными дистрибутивами Microsoft Windows были 32-битные IA-32 . сборки [39] [40] требуется режим совместимости с 32-разрядной версией Windows при использовании служб IIS на 64-разрядной платформе Windows. PHP версии 5.5 сделал 64-битные сборки x86-64 доступными для Microsoft Windows. [41]

Официальная поддержка безопасности PHP 5.6 закончилась 31 декабря 2018 г. [42]

PHP 6 и Юникод [ править ]

PHP получил неоднозначные отзывы из-за отсутствия встроенной поддержки Unicode на уровне ядра языка. [43] [44] В 2005 году под руководством Андрея Змиевского был инициирован проект по внедрению встроенной поддержки Unicode в PHP путем внедрения библиотеки International Components for Unicode (ICU) и внутреннего представления текстовых строк в формате UTF-16 . [45] Поскольку это привело бы к серьезным изменениям как во внутреннем устройстве языка, так и в пользовательском коде, планировалось выпустить его как версию 6.0 языка вместе с другими основными функциями, которые тогда находились в разработке. [46]

Однако нехватка разработчиков, которые понимали необходимые изменения, а также проблемы с производительностью, возникающие из-за преобразования в UTF-16, который редко используется в веб-контексте, привели к задержкам в реализации проекта. [47] В результате в 2009 году была создана версия PHP 5.3, в которой многие функции, не относящиеся к Unicode, были перенесены из PHP 6, в частности пространства имен. В марте 2010 года проект в его нынешнем виде был официально закрыт, и была подготовлена ​​версия PHP 5.4, которая будет содержать большинство оставшихся не-Unicode функций PHP 6, таких как признаки и повторное связывание замыканий. [48] Первоначальные надежды заключались в том, что будет разработан новый план интеграции Unicode, но к 2014 году он так и не был принят. [ нужна цитата ]

PHP 7 [ править ]

В 2014 и 2015 годах была разработана новая основная версия PHP — PHP 7. Нумерация этой версии вызвала некоторые споры среди внутренних разработчиков. [49] Хотя эксперименты PHP 6 с Unicode никогда не публиковались, в нескольких статьях и названиях книг упоминались имена PHP 6, что могло бы вызвать путаницу, если бы в новой версии это имя использовалось повторно. [50] После голосования было выбрано название PHP 7. [51]

Основой PHP 7 является ветвь PHP , которая изначально называлась PHP следующего поколения ( phpng ). Его авторы Дмитрий Стогов, Синьчэнь Хуэй и Никита Попов. [52] и направлен на оптимизацию производительности PHP путем рефакторинга Zend Engine, сохраняя при этом почти полную языковую совместимость. [53] К 14 июля 2014 года тесты на базе WordPress , которые служили основным набором тестов для проекта phpng, показали почти 100%-ное увеличение производительности. Изменения в phpng упрощают повышение производительности в будущих версиях, поскольку более компактные структуры данных и другие изменения считаются более подходящими для успешного перехода на JIT -компилятор. [54] Из-за существенных изменений переработанный Zend Engine получил название Zend Engine 3 , придя на смену Zend Engine 2, использовавшемуся в PHP 5. [55]

Из-за серьезных внутренних изменений в phpng он должен получить новый основной номер версии PHP, а не второстепенный выпуск PHP 5, в соответствии с процессом выпуска PHP. [56] В основных версиях PHP разрешено нарушать обратную совместимость кода, и поэтому PHP 7 предоставил возможность для других улучшений, помимо phpng, которые требуют нарушений обратной совместимости. [ нужна цитата ] В частности, это коснулось следующих изменений:

  • Многие устаревшие механизмы ошибок PHP на фатальном или восстанавливаемом уровне были заменены современными объектно-ориентированными исключениями . [57]
  • Синтаксис разыменования переменных был переработан, чтобы стать более последовательным и полным, что позволяет использовать операторы ->, [], (), {}, и ::, с произвольными значимыми левыми выражениями. [58]
  • Поддержка устаревших методов конструктора в стиле PHP 4 прекращена. [59]
  • Поведение foreach заявление было изменено, чтобы быть более предсказуемым. [60]
  • Конструкторы для нескольких встроенных в PHP классов, которые возвращали значение null в случае сбоя, были изменены и теперь вместо этого вызывают исключение для обеспечения единообразия. [61]
  • Несколько неподдерживаемых или устаревших интерфейсов и расширений серверного прикладного программирования (SAPI) были удалены из ядра PHP, в первую очередь устаревшие версии. mysql расширение. [62]
  • Поведение list() Оператор был изменен, чтобы удалить поддержку строк. [63]
  • Была удалена поддержка устаревших разделителей в стиле ASP. <% и %> и <script language="php"> ... </script>. [64]
  • Ошибка, позволяющая оператору переключения иметь несколько default положения были исправлены. [65]
  • Поддержка шестнадцатеричных чисел в некоторых неявных преобразованиях строк в числовые типы была удалена. [66]
  • Операторы левого были и правого сдвига изменены, чтобы обеспечить более единообразное поведение на разных платформах. [67]
  • Преобразования между числами с плавающей запятой и целыми числами были изменены (например, бесконечность заменена на преобразование в ноль) и реализованы более последовательно на разных платформах. [67] [68]

PHP 7 также включает новые возможности языка. В частности, он представил объявления возвращаемого типа для функций. [69] которые дополняют существующие объявления типов параметров и поддерживают скалярные типы (целое число, число с плавающей точкой, строка и логическое значение) в объявлениях параметров и возвращаемых типов. [70]

PHP 8 [ править ]

PHP 8 был выпущен 26 ноября 2020 года и в настоящее время является второй по популярности основной версией PHP. PHP 8 является основной версией и содержит существенные изменения по сравнению с предыдущими версиями. [71] [72] Новые функции и заметные изменения включают в себя:

Сборка точно в срок [ править ]

компиляция «точно в срок» . В PHP 8 поддерживается [73]

PHP 8 JIT-компилятор может обеспечить существенное повышение производительности в некоторых случаях использования. [74] [75] в то время как PHP-разработчик Никита Попов заявил, что повышение производительности большинства веб-сайтов будет менее существенным, чем при обновлении с PHP 5 на PHP 7. [76] Существенные улучшения ожидаются больше для операций математического типа, чем для обычных случаев использования в веб-разработке. [76] Кроме того, JIT-компилятор дает возможность в будущем перенести часть кода с C на PHP благодаря повышению производительности в некоторых случаях использования. [77]

Добавление выражения соответствия [ править ]

PHP 8 представил match выражение. [78] Выражение соответствия концептуально похоже на выражение switch и является более компактным для некоторых случаев использования. [79] Потому что match является выражением, его результат может быть присвоен переменной или возвращен функцией. [80]

Введите изменения и дополнения [ править ]

В PHP 8 появились типы объединения, новый static тип возвращаемого значения и новый mixed тип. [71]

«Атрибуты», часто называемые «аннотациями» в других языках программирования, были добавлены в PHP 8, что позволяет добавлять метаданные в классы. [71]

throw из утверждения превратился в выражение. [81] Это позволяет создавать исключения в местах, которые ранее были невозможны. [71]

Изменения и дополнения синтаксиса [ править ]

PHP 8 включает изменения, позволяющие использовать альтернативный, более краткий или более согласованный синтаксис в ряде сценариев. Например, оператор nullsafe аналогичен оператору объединения нулей. ??, но используется при вызове методов. [82] Следующий фрагмент кода не выдаст ошибку, если getBirthday() возвращает ноль:

$human_readable_date   =   $user  ->  getBirthday  ()  ?->  diffForHumans  (); 

Продвижение свойств конструктора было добавлено как « синтаксический сахар », позволяющее автоматически устанавливать свойства класса при передаче параметров в конструктор класса . [71] Это уменьшает количество шаблонного кода , который необходимо написать. [83]

Другие незначительные изменения включают поддержку использования ::class на объектах, что служит альтернативой использованию get_class(); [71] незахватывающие уловы в блоках try-catch; настройки синтаксиса переменных для устранения несоответствий; поддержка именованных аргументов; и поддержка завершающих запятых в списках параметров, что повышает согласованность с поддержкой завершающих запятых в других контекстах, например в массивах. [72]

Изменения и дополнения стандартной библиотеки [ править ]

  • Слабые карты были добавлены в PHP 8. WeakMap содержит ссылки на объекты, но эти ссылки не препятствуют сбору мусора таких объектов . [84] Это может обеспечить повышение производительности в сценариях, где данные кэшируются ; это имеет особое значение для объектно-реляционных отображений (ORM). [71]
  • Различные корректировки интерфейсов, например добавление поддержки создания DateTime объекты из интерфейсов и добавление Stringable интерфейс, который можно использовать для подсказки типов. [71]
  • Различные новые функции, включая str_contains(), str_starts_with(), и str_ends_with(); [85] fdiv(); get_debug_type(); и get_resource_id()[71]
  • Объектная реализация token_get_all()[71]

Дополнительные изменения [ править ]

  • Аннотации типов были также добавлены в сам исходный код PHP C, чтобы позволить внутренним функциям и методам иметь «полную информацию о типе в отражении». [86]
  • Наследование с помощью частных методов [71]
  • Абстрактные методы улучшения характеристик [71]

PHP 8.1 [ править ]

PHP 8.1 был выпущен 25 ноября 2021 года. [87] Добавлена ​​поддержка перечислений (также называемых «перечислениями»), объявляющих свойства как readonly(что предотвращает изменение свойства после инициализации) и распаковку массива с помощью строковых ключей. Новый тип Never можно использовать для указания того, что функция не возвращает результат. [88]

PHP 8.2 [ править ]

PHP 8.2 был выпущен 8 декабря 2022 года. [89] Новое в этом выпуске: readonly классы (свойства экземпляров которых неявно доступны только для чтения), дизъюнктивной нормальной формы (DNF) и типы random расширение, предоставляющее генератор псевдослучайных чисел с объектно-ориентированным API . [90]

История выпусков [ править ]

Версия Дата выпуска Поддерживается до [91] Примечания
Старая версия, больше не поддерживается: 1.0. 8 июня 1995 г. Официально называется «Инструменты личной домашней страницы (PHP Tools)». Это первое использование имени «PHP». [11]
Старая версия, больше не поддерживается: 2.0. 1 ноября 1997 г. Официально называется «PHP/FI 2.0». Это первый релиз, который можно охарактеризовать как PHP, поскольку он представляет собой отдельный язык со многими функциями, сохранившимися до наших дней.
Старая версия, больше не поддерживается: 3.0. 6 июня 1998 г. 20 октября 2000 г. [91] Разработка переходит от одного человека к нескольким разработчикам. Зеев Сураски и Энди Гутманс переписали основу этой версии. [11]
Старая версия, больше не поддерживается: 4.0. 22 мая 2000 г. [92] 23 июня 2001 г. [91] Добавлена ​​более продвинутая двухэтапная система анализа/выполнения тегов, называемая движком Zend. [93]
Старая версия, больше не поддерживается: 4.1. 10 декабря 2001 г. [94] 12 марта 2002 г. [91] Введены «суперглобальные переменные» ( $_GET, $_POST, $_SESSION, и т. д.) [93]
Старая версия, больше не поддерживается: 4.2. 22 апреля 2002 г. [95] 6 сентября 2002 г. [91] Неполноценный register_globalsпо умолчанию. Данные, полученные по сети, больше не вставляются непосредственно в глобальное пространство имен, закрывая возможные дыры в безопасности приложений. [93]
Старая версия, больше не поддерживается: 4.3. 27 декабря 2002 г. [96] 31 марта 2005 г. [91] Введен интерфейс командной строки (CLI) в дополнение к CGI. [93] [97]
Старая версия, больше не поддерживается: 4.4. 11 июля 2005 г. [98] 7 августа 2008 г. [91] Исправлена ​​ошибка повреждения памяти, из-за которой требовалось нарушение двоичной совместимости с расширениями, скомпилированными для PHP версии 4.3.x. [99]
Старая версия, больше не поддерживается: 5.0. 13 июля 2004 г. [100] 5 сентября 2005 г. [91] Zend Engine II с новой объектной моделью. [101]
Старая версия, больше не поддерживается: 5.1. 24 ноября 2005 г. [102] 24 августа 2006 г. [91] Улучшение производительности за счет введения переменных компилятора в обновленный PHP Engine. [101] Добавлены объекты данных PHP (PDO) в качестве согласованного интерфейса для доступа к базам данных. [103]
Старая версия, больше не поддерживается: 5.2. 2 ноября 2006 г. [104] 6 января 2011 г. [91] Расширение фильтра включено по умолчанию. Встроенная поддержка JSON . [101]
Старая версия, больше не поддерживается: 5.3. 30 июня 2009 г. [105] 14 августа 2014 г. [91] Поддержка пространств имен ; поздние статические привязки , метка перехода (ограниченный переход ), анонимные функции , замыкания , PHP-архивы (phar), сборка мусора для циклических ссылок, улучшенная поддержка Windows , sqlite3, mysqlnd в качестве замены libmysql в качестве базовой библиотеки для расширений, которые работают с MySQL , fileinfo в качестве замены mime_magic для лучшей поддержки MIME , расширения интернационализации и прекращения поддержки расширения ereg.
Старая версия, больше не поддерживается: 5.4. 1 марта 2012 г. [106] 3 сентября 2015 г. [91] Поддержка особенностей , поддержка синтаксиса коротких массивов. Удалены элементы: register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister() и session_is_registered(). Встроенный веб-сервер. [107] Несколько улучшений существующих функций, производительности и снижение требований к памяти.
Старая версия, больше не поддерживается: 5.5. 20 июня 2013 г. [108] 10 июля 2016 г. [109] Поддержка генераторов , finally блоки обработки исключений, OpCache (на базе Zend Optimizer+), входящий в официальный дистрибутив. [110]
Старая версия, больше не поддерживается: 5.6. 28 августа 2014 г. [111] 31 декабря 2018 г. [109] Постоянные скалярные выражения, вариативные функции , распаковка аргументов, новый оператор возведения в степень, расширения use оператор для функций и констант, новое phpdbg отладчик как модуль SAPI и другие мелкие улучшения. [112]
6.х Не выпущен Заброшенная версия PHP, в которой планировалось включить встроенную поддержку Unicode. [113] [114]
Старая версия, больше не поддерживается: 7.0. 3 декабря 2015 г. [115] 10 января 2019 г. [56] Zend Engine 3 (улучшение производительности) [54] и поддержка 64-битных целых чисел в Windows [116] ), единый синтаксис переменных, [58] AST , Процесс компиляции на основе [117] добавлен Closure::call(), [118] согласованность побитового сдвига на разных платформах, [119] ?? ( нулевой оператор объединения), [120] Unicode кода Синтаксис escape- , [121] объявления возвращаемого типа, [69] объявления скалярного типа (целое число, число с плавающей запятой, строка и логическое значение), [70] <=> «космический корабль» оператор трехстороннего сравнения , [122] генератора , делегирование [123] анонимные занятия , [124] более простой и более доступный CSPRNG API, [125] замена многих оставшихся внутренних «ошибок» PHP более современными исключениями , [57] и сокращенный синтаксис для импорта нескольких элементов из пространства имен. [126]
Старая версия, больше не поддерживается: 7.1. 1 декабря 2016 г. 1 декабря 2019 г. [109] iterable тип, [127] обнуляемые типы, [128] void тип возвращаемого значения , [129] констант класса модификаторы видимости , [130] синтаксис короткого списка, [131] многократный улов [132]
Старая версия, больше не поддерживается: 7.2. 30 ноября 2017 г. 30 ноября 2020 г. [109] Параметр объекта и объявление типа возвращаемого значения, [133] расширение libsodium, [134] переопределение абстрактного метода, [135] расширение типа параметра [136]
Старая версия, больше не поддерживается: 7.3. 6 декабря 2018 г. [137] 6 декабря 2021 г. Гибкий синтаксис Heredoc и Nowdoc, [138] поддержка присвоения ссылок и деконструкции массива с помощью list(), [139] поддержка PCRE2, [140] hrtime функция [141]
Старая версия, больше не поддерживается: 7.4. 28 ноября 2019 г. [142] 28 ноября 2022 г. Типизированные свойства 2.0, [143] предварительная загрузка, [144] оператор присваивания, объединяющий нулевые значения, [145] улучшать openssl_random_pseudo_bytes, [146] слабые ссылки, [84] интерфейс внешней функции (FFI) , [147] всегда доступное расширение хеша, [148] реестр хэшей паролей, [149] разделение многобайтовых строк, [150] отражение для ссылок, [151] разделить ext/wddx, [152] новый механизм сериализации пользовательских объектов [153]
Старая версия, больше не поддерживается: 8.0. 26 ноября 2020 г. [154] 26 ноября 2023 г. JIT-компиляция , [73] массивы, начинающиеся с отрицательного индекса, [155] более строгая/разумная семантика языка (проверка абстрактных методов признаков), [156] более разумное сравнение строк и чисел, [157] более разумные числовые строки, [158] TypeError о недопустимых арифметических/побитовых операторах, [159] переклассификация различных ошибок двигателя, [160] постоянные ошибки типов для внутренних функций, [161] фатальная ошибка из-за несовместимых сигнатур методов [162] ), независимое от локали преобразование числа с плавающей запятой в строку, [163] настройки синтаксиса переменных, [164] атрибуты, [165] [166] [167] [168] именованные аргументы, [169] выражение соответствия, [170] продвижение недвижимости застройщика, [171] типы объединений, [172] mixed тип, [173] статический тип возвращаемого значения, [174] нулевой безопасный оператор, [82] незахватывающие уловы, [175] throw выражение, [81] Расширение JSON всегда доступно. [176]
Старая версия, но все еще поддерживается: 8.1. 25 ноября 2021 г. [177] 31 декабря 2025 г. Явное обозначение восьмеричного целого числа, [178] перечисления, [179] свойства только для чтения, [180] первоклассный вызываемый синтаксис, [181] new в инициализаторах, [182] чистые типы пересечений, [183] never тип возвращаемого значения, [184] final ограничения класса, [185] волокна [186]
Старая версия, но все еще поддерживается: 8.2. 8 декабря 2022 г. [187] 31 декабря 2026 г. Классы только для чтения, [188] null, false, и true как отдельные типы, [189] [190] преобразование регистра независимо от локали, [191] типы дизъюнктивной нормальной формы, [192] константы в чертах [193]
Текущая стабильная версия: 8.3. 23 ноября 2023 г. [194] 31 декабря 2027 г. Типизированные константы класса, [195] выборка констант динамического класса, [196] #[\Override] атрибут, [197] глубокое клонирование свойств, доступных только для чтения, [198] новый json_validate функция, [199] дополнения рандомайзера, [200] линтер командной строки поддерживает несколько файлов
Будущая версия: 8.4 21 ноября 2024 г. [201] 31 декабря 2028 г.
Легенда:
Старая версия
Старая версия, все еще поддерживается
Последняя версия
Latest preview version
Будущий выпуск

Начиная с 28 июня 2011 года группа разработчиков PHP установила график выпуска новых версий PHP. [56] Согласно этой системе, по крайней мере, один выпуск должен происходить каждый месяц. Раз в год должен выходить минорный выпуск, который может включать новые функции. Каждый второстепенный выпуск должен поддерживаться как минимум в течение двух лет с исправлениями безопасности и ошибок, а затем не менее одного года только с исправлениями безопасности, что в общей сложности составляет трехлетний процесс выпуска для каждого второстепенного выпуска. Никакие новые функции, за исключением небольших и автономных, не могут быть добавлены в второстепенную версию в течение трехлетнего процесса выпуска.

Талисман [ править ]

elePHPant, талисман PHP

Талисманом проекта PHP является elePHPant , синий слон с логотипом PHP на боку, разработанный Винсентом Понтье. [202] в 1998 году. [203] «Буквы (PHP) имели форму слона, если смотреть под углом сбоку». [204] elePHPant иногда имеет другой цвет, когда он находится в форме плюшевой игрушки . [205]

За прошедшие годы было создано множество вариаций этого талисмана. Только elePHPants, созданные по оригинальному дизайну Винсента Понтье, считаются официальными сообществом. [206] Они являются коллекционными, и некоторые из них чрезвычайно редки. [207]

Синтаксис [ править ]

Приложение «Hello, World» на PHP 7.4, работающее на встроенном сервере разработки.

Следующий «Привет, мир!» Программа написана на PHP-коде, встроенном в HTML- документ:

<!DOCTYPE html> 
 <  html  > 
     <  head  > 
         <  title  >  PHP "Hello, World!"   программа  </  title  > 
     </  head  > 
     <  body  > 
         <  p  >  <?   =   'Привет, мир!'    ?>  </  p  > 
     </  body  > 
 </  html  > 

Однако, поскольку не требуется встраивание PHP-кода в HTML, простейшая версия Hello, World! можно записать так, с закрывающим тегом ?> по желанию опускается в файлах, содержащих чистый код PHP. [208]

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

Интерпретатор PHP выполняет код PHP только внутри своих разделителей . Все, что находится за пределами разделителей, не обрабатывается PHP, хотя текст, отличный от PHP, по-прежнему подчиняется структурам управления , описанным в коде PHP. Наиболее распространенными разделителями являются <?php открыть и ?>закрыть разделы PHP. Сокращенная форма <?также существует. Этот короткий разделитель делает файлы сценариев менее переносимыми, поскольку их поддержка может быть отключена в локальной конфигурации PHP и поэтому не рекомендуется. [209] [210] И наоборот, нет никаких рекомендаций против короткого тега echo. <?=. [211] До PHP 5.4.0 этот короткий синтаксис для echo работает только с short_open_tag настройка конфигурации включена, а для PHP 5.4.0 и более поздних версий она всегда доступна. [212] [213] [209] Целью всех этих разделителей является отделение кода PHP от содержимого, не относящегося к PHP, такого как код JavaScript или разметка HTML. [214] Итак, самое короткое «Hello, World!» программа, написанная на PHP:

<?   =  'Привет, мир!'   ; 

Первая форма разделителей, <?php и ?>, в XHTML и других XML- документах создает правильно сформированные инструкции обработки XML. [215] Это означает, что результирующая смесь PHP-кода и другой разметки в серверном файле сама по себе является правильно сформированным XML.

Переменные начинаются с символа доллара , и тип не нужно указывать заранее. В PHP 5 появились объявления типов , которые позволяют функциям заставлять свои параметры быть объектами определенного класса, массивами, интерфейсами или функциями обратного вызова . Однако до PHP 7 объявления типов нельзя было использовать со скалярными типами, такими как целые числа или строки. [70]

Ниже приведен пример объявления и инициализации переменных PHP.

<?php 
     $name   =   'Джон'  ;     // объявляемая и инициализируемая переменная строкового типа 
     $age   =   18  ;          // объявляемая и инициализируемая переменная целочисленного типа 
     $height   =   5.3  ;      // объявляется и инициализируется переменная типа double 
     echo   $name   .    ' является '   .    $высота   .    "м высокий  \n  "  ;    // объединение переменных и строк 
     echo   «  $name  $age  лет».   ;    // интерполируем переменные в строку 
 ?> 

В отличие от имен функций и классов, имена переменных чувствительны к регистру. Как строки в двойных кавычках (""), так и строки Heredoc предоставляют возможность интерполировать значение переменной в строку. [216] PHP воспринимает новую строку как пробел , как в языке свободной формы , а операторы завершаются точкой с запятой. [217] PHP имеет три типа синтаксиса комментариев : /* */ отмечает блокированные и встроенные комментарии; // или # используются для однострочных комментариев. [218] echo Оператор — это одно из нескольких средств, предоставляемых PHP для вывода текста. [ нужна цитата ]

С точки зрения ключевых слов и синтаксиса языка PHP похож на синтаксис в стиле C. if условия, for и while Циклы и возвраты функций по синтаксису аналогичны синтаксису таких языков, как C, C++, C#, Java и Perl. [ нужна цитата ]

Типы данных [ править ]

PHP свободно типизирован . Он хранит целые числа в диапазоне, зависящем от платформы, в виде 32-, 64- или 128-битного со знаком целого числа эквивалентного длинному типу языка C. , Целые числа без знака в определенных ситуациях преобразуются в значения со знаком, что отличается от поведения многих других языков программирования. [219] Целочисленным переменным можно присваивать десятичные (положительные и отрицательные), восьмеричные , шестнадцатеричные и двоичные обозначения. [ нужна цитата ]

Числа с плавающей запятой также хранятся в диапазоне, зависящем от платформы. Их можно указать с помощью записи с плавающей запятой или двух форм научной записи . [220] PHP имеет собственный логический тип, похожий на собственные логические типы в Java и C++ . Используя правила преобразования логических типов, ненулевые значения интерпретируются как истинные, а нули — как ложные, как в Perl и C++. [220]

Тип данных null представляет собой переменную, не имеющую значения; NULL — единственное разрешенное значение для этого типа данных. [220]

Переменные типа «ресурс» представляют собой ссылки на ресурсы из внешних источников. Обычно они создаются функциями из определенного расширения и могут обрабатываться только функциями из того же расширения; примеры включают ресурсы файлов, изображений и баз данных. [220]

Массивы могут содержать элементы любого типа, который может обрабатывать PHP, включая ресурсы, объекты и даже другие массивы. Порядок сохраняется в списках значений и хэшах как с ключами, так и со значениями, и их можно смешивать. [220] PHP также поддерживает строки , которые можно использовать с одинарными и двойными кавычками, nowdoc или heredoc . синтаксисом [221]

Стандартная библиотека PHP (SPL) пытается решить стандартные проблемы и реализует эффективные интерфейсы и классы доступа к данным. [222]

Функции [ править ]

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

Пользовательские функции могут быть определены разработчиком:

function   myAge  (  int   $birthYear  )  :   string 
 { 
     // вычисляем возраст, вычитая год рождения из текущего года. 
      $yearsOld   =   дата  (  'Y'  )   -   $birthYear  ; 

      // возвращаем возраст в описательной строке. 
      вернуть   $yearsOld   .    (  $yearsOld   ==   1   ?   'год'   :   'лет'  ); 
  } 

 echo   'Я сейчас'   .    Мой возраст  (  1995  )   .    ' старый.'   ; 

По состоянию на 2024 год вывод приведенного выше примера программы будет следующим: «Мне сейчас 29 лет».

Вместо указателей на функции на функции в PHP можно ссылаться по строке, содержащей их имя. Таким образом, можно использовать обычные функции PHP, например, в качестве обратных вызовов или в таблицах функций . [224] Пользовательские функции могут быть созданы в любое время без прототипирования . [223] [224] Функции могут быть определены внутри блоков кода, что позволяет во время выполнения принять решение о том, следует ли определять функцию. Eсть function_existsфункция, которая определяет, была ли уже определена функция с данным именем. В вызовах функций должны использоваться круглые скобки, за исключением функций- конструкторов классов с нулевым аргументом , вызываемых с помощью оператора PHP. new, в этом случае круглые скобки необязательны. [ нужна цитата ]

Начиная с PHP 4.0.1 create_function(), тонкая обертка вокруг eval(), позволял создавать обычные функции PHP во время выполнения программы; он устарел в PHP 7.2 и удален в PHP 8.0. [225] в пользу синтаксиса анонимных функций или « замыканий » [226] который может захватывать переменные из окружающей области видимости, что было добавлено в PHP 5.3. Синтаксис сокращенной стрелки был добавлен в PHP 7.4: [227]

функция   getAdder  (  $x  )   { 
     return   fn  (  $y  )   =>   $x   +   $y  ; 
  } 

 $adder   =   getAdder  (  8  ); 
  эхо   $adder  (  2  );     // печатает "10" 

В приведенном выше примере getAdder() функция создает замыкание, используя переданный аргумент $x, который принимает дополнительный аргумент $yи возвращает созданное замыкание вызывающему объекту. Такая функция является объектом первого класса, то есть ее можно хранить в переменной, передавать в качестве параметра другим функциям и т. д. [228]

Что необычно для динамически типизированного языка, PHP поддерживает объявления типов для параметров функции, которые применяются во время выполнения. Это поддерживается для классов и интерфейсов с PHP 5.0, для массивов с PHP 5.1, для «вызываемых объектов» с PHP 5.4 и скалярных типов (целочисленных, плавающих, строковых и логических) с PHP 7.0. [70] В PHP 7.0 также есть объявления типов для типов возвращаемых функций, выраженные путем размещения имени типа после списка параметров, которому предшествует двоеточие. [69] Например, getAdder Функция из предыдущего примера может быть аннотирована такими типами в PHP 7:

функция   getAdder  (  int   $x  )  :   Closure 
 { 
     return   fn  (  int   $y  )  :   int   =>   $x   +   $y  ; 
  } 

 $adder   =   getAdder  (  8  ); 
  эхо   $adder  (  2  );    // печатает «10» 
 echo   $adder  (  null  );    // выдает исключение, поскольку был передан неправильный тип 
 $adder   =   getAdder  ([]);    // также вызовет исключение 

По умолчанию объявления скалярных типов следуют принципам слабой типизации. Так, например, если тип параметра int, PHP позволял бы передавать в эту функцию не только целые числа, но и преобразуемые числовые строки, числа с плавающей запятой или логические значения и преобразовывать их. [70] Однако в PHP 7 есть режим «строгой типизации», который при использовании запрещает такие преобразования для вызовов функций и возвратов данных внутри файла. [70]

Объекты PHP [ править ]

Базовые функции объектно-ориентированного программирования были добавлены в PHP 3 и улучшены в PHP 4. [11] Это позволило PHP получить дополнительную абстракцию, упростив творческие задачи для программистов, использующих этот язык. Обработка объектов была полностью переписана для PHP 5, что расширило набор функций и повысило производительность. [229] В предыдущих версиях PHP объекты обрабатывались как типы значений . [229] Недостаток этого метода заключался в том, что коду приходилось интенсивно использовать «ссылочные» переменные PHP, если он хотел изменить переданный объект, а не создавать его копию. В новом подходе на объекты ссылаются по дескриптору , а не по значению. [ нужна цитата ]

В PHP 5 появились частные и защищенные переменные-члены и методы, а также абстрактные классы , финальные классы , абстрактные методы и финальные методы . Он также представил стандартный способ объявления конструкторов и деструкторов , аналогичный тому, который используется в других объектно-ориентированных языках, таких как C++ , и стандартную модель обработки исключений . Кроме того, в PHP 5 добавлены интерфейсы и разрешена реализация нескольких интерфейсов. Существуют специальные интерфейсы, которые позволяют объектам взаимодействовать с системой времени выполнения. Объекты , реализующие ArrayAccess, можно использовать с синтаксисом массива , а объекты, реализующие Iterator или IteratorAggregate, можно использовать с синтаксисом массива. foreach языковая конструкция . нет функции виртуальных таблиц В движке , поэтому во время компиляции статические переменные связываются с именем, а не ссылкой. [230]

Если разработчик создает копию объекта, используя зарезервированное слово clone, движок Zend проверит, __clone()метод определен. Если нет, он вызовет значение по умолчанию __clone()который скопирует свойства объекта. Если __clone()метод определен, то он будет отвечать за установку необходимых свойств в созданном объекте. Для удобства движок предоставляет функцию, которая импортирует свойства исходного объекта, поэтому программист может начать с реплики исходного объекта по значению и переопределять только те свойства, которые необходимо изменить. [231]

Видимость свойств и методов PHP определяется с помощью ключевых слов public, private, и protected. По умолчанию используется public, если только var ; используется var является синонимом public. Заявленные товары public можно получить доступ повсюду. protected ограничивает доступ к унаследованным классам (и к классу, определяющему элемент). private ограничивает видимость только классом, который определяет элемент. [232] Объекты одного типа имеют доступ к частным и защищенным членам друг друга, даже если они не являются одним и тем же экземпляром. [ нужна цитата ]

Пример [ править ]

Ниже приведен базовый пример объектно-ориентированного программирования в PHP 8:

<?php 

 абстрактный   класс   User 
 { 
     protected   string   $name  ; 

      public   function   __construct  (  string   $name  ) 
     { 
         // сделать первую букву заглавной, а остальные строчными 
         $this  ->  name   =   ucfirst  (  strtolower  (  $name  )); 
      } 

     Публичная   функция   Greeting  ()  :   строка 
     { 
         return   «Привет, меня зовут «   .    $this  ->  имя  ; 
      } 

     абстрактная   публичная   функция   job  ()  :   string  ; 
  } 

 Класс   Student   расширяет   пользователя 
 { 
     общественная   функция   __construct  (  строка   $name  ,   частная   строка   $course  ) 
     { 
         родитель  ::  __construct  (  $name  ); 
      } 

     public   function   job  ()  :   string 
     { 
         return   «Я учусь»   .    $this  ->  курс  ; 
      } 
 } 

 класса   Учитель   расширяет   пользователя 
 { 
     общественная   функция   __construct  (  строка   $name  ,   частный   массив   $teachingCourses  ) 
     { 
         родитель  ::  __construct  (  $name  ); 
      } 

     public   function   job  ()  :   string 
     { 
         return   "Я преподаю"   .    implode  (  ", "  ,   $this  ->  TeacherCourses  ); 
      } 
 } 

 $students   =   [ 
     новый   студент  (  «Алиса»  ,   «Информатика»  ), 
     новый   студент  (  «Боб»  ,   «Информатика»  ), 
     новый   студент  (  «Чарли»  ,   «Бизнес-исследования»  ), 
 ]; 

  $teachers   =   [ 
     новый   учитель  (  «Дэн»  ,   [  «Информатика»  ,   «Информационная безопасность»  ]), 
     новый   учитель  (  «Эрин»  ,   [  «Информатика»  ,   «Программирование 3D-графики»  ]), 
     новый   учитель  (  «Фрэнки» "  ,   [  "Интернет-маркетинг"  ,   "Бизнес-исследования"  ,   "Электронная коммерция"  ]), 
 ]; 

foreach   ([  $students  ,   $teachers  ]   as   $users  )   { 
     echo   $users  [  0  ]  ::  class   .    "с:  \п  "  ; 

      array_walk  (  $users  ,   function   (  User   $user  )   { 
         echo   "  {  $user  ->  Greeting  ()  }  ,  {  $user  ->  job  ()  }  \n  "  ; 
     }); 
  } 

Эта программа выводит следующее:

Студенты:
 Здравствуйте, меня зовут Алиса, я изучаю информатику.
 Здравствуйте, меня зовут Боб, я изучаю информатику.
 Здравствуйте, меня зовут Чарли, я изучаю бизнес-исследования.
 Учителя:
 Здравствуйте, меня зовут Дэн, я преподаю информатику, информационную безопасность.
 Здравствуйте, меня зовут Эрин, я преподаю информатику, программирование 3D-графики.
 Здравствуйте, меня зовут Фрэнки, я преподаю онлайн-маркетинг, бизнес-исследования, электронную коммерцию.
 

Реализации [ править ]

Единственной полной реализацией PHP является оригинал, известный просто как PHP. Он наиболее широко используется и работает на Zend Engine . Чтобы отличить его от других реализаций, его иногда неофициально называют «Zend PHP». Zend Engine компилирует PHP исходный код на лету во внутренний формат, который он может выполнять, таким образом, он работает как интерпретатор . [233] [234] Это также «эталонная реализация» PHP, поскольку PHP не имеет формальной спецификации, и поэтому семантика Zend PHP определяет семантику PHP. Из-за сложной и тонкой семантики PHP, определяемой тем, как работает Zend, конкурирующим реализациям сложно обеспечить полную совместимость. [ нужна цитата ]

Модель PHP с одним запросом на выполнение сценария и тот факт, что Zend Engine является интерпретатором, приводят к неэффективности; в результате были разработаны различные продукты, помогающие улучшить производительность PHP. Чтобы ускорить время выполнения и не компилировать исходный код PHP каждый раз при доступе к веб-странице, сценарии PHP также можно развертывать во внутреннем формате движка PHP с помощью кэша кодов операций , который работает путем кэширования скомпилированной формы PHP-скрипт (коды операций) в общей памяти , чтобы избежать накладных расходов на анализ и компиляцию кода при каждом запуске сценария. Кэш опкодов Zend Opcache встроен в PHP начиная с версии 5.5. [235] Другим примером широко используемого кэша кодов операций является альтернативный кэш PHP (APC), который доступен как расширение PECL . [236]

Хотя Zend PHP по-прежнему остается самой популярной реализацией, было разработано несколько других реализаций. Некоторые из них являются компиляторами или поддерживают JIT-компиляцию и, следовательно, предлагают преимущества в производительности по сравнению с Zend PHP за счет отсутствия полной совместимости с PHP. [ нужна цитата ] Альтернативные реализации включают следующее:

  • HHVM (виртуальная машина HipHop) – разработанная в Facebook и доступная с открытым исходным кодом, она преобразует код PHP в байт-код высокого уровня (широко известный как промежуточный язык ), который затем динамически преобразуется в машинный код x86-64 во время выполнения с помощью JIT -компилятор, что приводит к повышению производительности до 6 раз. [237] Однако, поскольку версия 7.2 Zend превзошла HHVM, [238] и HHVM 3.24 — последняя версия, официально поддерживающая PHP. [239]
    • HipHop – разработанный в Facebook и доступный с открытым исходным кодом, он преобразует сценарии PHP в код C++ , а затем компилирует полученный код, снижая нагрузку на сервер до 50%. В начале 2013 года Facebook отказался от него в пользу HHVM по множеству причин, включая трудности с развертыванием и отсутствие поддержки всего языка PHP, включая create_function() и eval() конструкции. [240]
  • Parrot – виртуальная машина, предназначенная для эффективной работы с динамическими языками; кросс-транслятор Pipp преобразует исходный код PHP в промежуточное представление Parrot , которое затем транслируется в байт-код Parrot и выполняется виртуальной машиной.
  • PeachPie — компилятор второго поколения для . NET Common Intermediate Language (CIL) байт-код, построенный на платформе Roslyn ; преемник Фалангера, имеющий несколько архитектурных компонентов
  • Phalanger — компилирует PHP в байт-код .Net Common Intermediate Language; предшественник PeachPie
  • Quercus — компилирует PHP в байт-код Java.

Лицензирование [ править ]

PHP — это бесплатное программное обеспечение , распространяемое по лицензии PHP , которая предусматривает, что: [241]

Продукты, созданные на основе этого программного обеспечения, не могут называться «PHP», а также «PHP» не может появляться в их названии без предварительного письменного разрешения от [email protected]. Вы можете указать, что ваше программное обеспечение работает совместно с PHP, сказав « Foo for PHP» вместо того, чтобы называть его «PHP Foo» или «phpfoo».

Это ограничение на использование «PHP» делает лицензию PHP несовместимой с GNU General Public License (GPL), в то время как лицензия Zend несовместима из-за пункта о рекламе, аналогичного положению исходной лицензии BSD . [242]

Развитие и сообщество [ править ]

различные бесплатные библиотеки с открытым исходным кодом PHP включает в свой дистрибутив исходного кода или использует их в результирующих двоичных сборках PHP. PHP — это, по сути, интернет -система со встроенными модулями для доступа к серверам протокола передачи файлов (FTP) и многим серверам баз данных, включая PostgreSQL , MySQL , Microsoft SQL Server и SQLite (встроенная база данных), серверы LDAP и другие. . Многочисленные функции, знакомые программистам на языке C, например функции семейства stdio , доступны в стандартных сборках PHP. [243]

PHP позволяет разработчикам писать расширения на языке C , добавляющие функциональность языку PHP. Расширения PHP могут быть скомпилированы статически в PHP или загружены динамически во время выполнения. Было написано множество расширений для добавления поддержки Windows API , управления процессами в Unix-подобных операционных системах , многобайтовых строк ( Unicode ), cURL и нескольких популярных форматов сжатия . Другие функции PHP, доступные через расширения, включают интеграцию с Internet Relay Chat (IRC), динамическое создание изображений и Adobe Flash содержимого , объекты данных PHP (PDO) в качестве уровня абстракции, используемого для доступа к базам данных. [244] [245] [246] [247] [248] [249] [250] и даже синтез речи . Некоторые основные функции языка, например, работающие со строками и массивами, также реализованы как расширения. [251] Проект библиотеки расширений PHP (PECL) представляет собой хранилище расширений языка PHP. [252]

Некоторые другие проекты, такие как Zephir , предоставляют возможность создавать расширения PHP на языке высокого уровня и компилировать их в собственные расширения PHP. Такой подход вместо написания расширений PHP непосредственно на C упрощает разработку расширений и сокращает время, необходимое для программирования и тестирования. [253]

К декабрю 2018 года PHP Group состояла из десяти человек: Тис К. Арнтцен , Стиг Баккен , Шейн Каравео , Энди Гутманс , Расмус Лердорф , Сэм Руби , Саша Шуман , Зеев Сураски , Джим Уинстед и Андрей Змиевски . [254]

Zend Technologies предоставляет сертификацию PHP на основе PHP 7. [255] экзамен (ранее основанный на PHP 5.5) для программистов, желающих стать сертифицированными разработчиками PHP.

Фонд PHP [ править ]

PHP
Формирование 22 ноября 2021 г .; 2 года назад ( 22.11.2021 )
Основатель Automattic , Laravel , Acquia , Zend , Частный упаковщик, Symfony , Craft CMS, Tideways, PrestaShop , JetBrains [256]
Веб-сайт https://thephp.foundation

26 ноября 2021 года блог JetBrains объявил о создании The PHP Foundation, который будет спонсировать проектирование и разработку PHP. [257]

Год фиксирует Отзывы RFC
2022 [258] 683 283 8
2023 [259] 784 702 17

Фонд нанимает «Основных разработчиков» для работы над основным репозиторием языка PHP. Член правления фонда Роман Пронский заявил, что они намерены платить застройщикам "рыночные зарплаты". [260]

Реакция на фонд в основном была положительной: фонд хвалили за лучшую поддержку языка и помощь в прекращении падения популярности языка. [261] [262] Тем не менее, его также критиковали за добавление критических изменений в второстепенные версии PHP, например, в PHP 8.2, где инициализация членов класса вне исходной области действия класса приводила к ошибкам обесценивания. [263] эти изменения повлияли на ряд проектов с открытым исходным кодом, включая WordPress . [264]

Германии Суверенный технологический фонд выделил более 200 000 евро на поддержку PHP Foundation. [265]

Установка и настройка [ править ]

Пример вывода функции phpinfo() в PHP 7.1

Существует два основных способа добавить поддержку PHP на веб-сервер — в виде собственного модуля веб-сервера или в виде исполняемого файла CGI. PHP имеет прямой интерфейс модуля, называемый интерфейсом программирования серверных приложений (SAPI), который поддерживается многими веб-серверами, включая HTTP-сервер Apache , Microsoft IIS и веб-сервер iPlanet . Некоторые другие веб-серверы, такие как OmniHTTPd, поддерживают интерфейс программирования приложений интернет-сервера (ISAPI), который представляет собой . интерфейс модуля веб-сервера Microsoft Если PHP не поддерживает модули веб-сервера, его всегда можно использовать в качестве процессора Common Gateway Interface (CGI) или FastCGI ; в этом случае веб-сервер настроен на использование исполняемого файла CGI PHP для обработки всех запросов к файлам PHP. [266]

PHP-FPM (FastCGI Process Manager) — это альтернативная реализация FastCGI для PHP, входящая в состав официального дистрибутива PHP, начиная с версии 5.3.3. [267] По сравнению со старой реализацией FastCGI, она содержит некоторые дополнительные функции, в основном полезные для сильно нагруженных веб-серверов. [268]

При использовании PHP для сценариев командной строки интерфейса командной строки необходим исполняемый файл (CLI) PHP. PHP поддерживает интерфейс программирования приложений сервера CLI (SAPI), начиная с PHP 4.3.0. [269] Основное внимание в этом SAPI уделяется разработке приложений оболочки с использованием PHP. Между CLI SAPI и другими SAPI существует немало различий, хотя во многом они имеют одинаковое поведение. [270]

PHP имеет прямой интерфейс модуля под названием SAPI для различных веб-серверов; [271] в случае PHP 5 и Apache 2.0 в Windows он предоставляется в виде файла DLL с именем php5apache2.dll , [272] это модуль, который, помимо других функций, обеспечивает интерфейс между PHP и веб-сервером, реализованный в форме, понятной серверу. Эта форма известна как SAPI. [ нужна цитата ]

Существуют разные виды SAPI для различных расширений веб-сервера. Например, в дополнение к перечисленным выше, другие SAPI для языка PHP включают интерфейс Common Gateway и интерфейс командной строки. [271] [273]

PHP также можно использовать для написания настольных приложений с графическим пользовательским интерфейсом (GUI) с помощью расширения PHP-GTK . PHP-GTK не включен в официальный дистрибутив PHP. [266] и как расширение его можно использовать только с версиями PHP 5.1.0 и новее. Самый распространенный способ установки PHP-GTK — это его компиляция из исходного кода. [274]

Когда PHP устанавливается и используется в облачных средах, комплекты разработки программного обеспечения (SDK) для использования функций, специфичных для облака. предоставляются [ нужна цитата ] Например:

Поддерживаются многочисленные параметры конфигурации, влияющие как на основные функции PHP, так и на расширения. [277] [278] Конфигурационный файл php.ini ищется в разных местах, в зависимости от способа использования PHP. [279] Файл конфигурации разделен на различные разделы, [280] хотя некоторые параметры конфигурации также можно установить в конфигурации веб-сервера. [281]

Используйте [ править ]

Общий обзор программного пакета LAMP, показанный здесь вместе со Squid.

PHP — это язык сценариев общего назначения, который особенно подходит для на стороне сервера веб-разработки , и в этом случае PHP обычно запускается на веб-сервере . Любой PHP-код в запрошенном файле выполняется средой выполнения PHP, обычно для создания динамического содержимого веб-страницы или динамических изображений, используемых на веб-сайтах или в других местах. [282] Его также можно использовать для сценариев командной строки и (GUI) на стороне клиента приложений с графическим интерфейсом пользователя . PHP можно развернуть на большинстве веб-серверов, во многих операционных системах и платформах , а также использовать со многими системами управления реляционными базами данных (СУБД). Большинство провайдеров веб-хостинга поддерживают PHP для использования своими клиентами. Он доступен бесплатно, и PHP Group предоставляет пользователям полный исходный код для создания, настройки и расширения для собственного использования. [17]

Динамическая веб-страница: пример серверного сценария (PHP и MySQL)

Первоначально разработанный для создания динамических веб-страниц , PHP теперь фокусируется в основном на написании сценариев на стороне сервера . [283] и он похож на другие серверные языки сценариев, которые передают динамический контент от веб-сервера клиенту , такие как Python , Microsoft от ASP.NET , Sun Microsystems от JavaServer Pages , [284] и mod_perl. PHP также привлек внимание к разработке множества программных платформ , которые предоставляют строительные блоки и структуру проектирования для ускорения разработки приложений (RAD). [ нужна цитата ] Некоторые из них включают PRADO , CakePHP , Symfony , CodeIgniter , Laravel , Yii Framework , Phalcon и Laminas , предлагающие функции, аналогичные другим веб-фреймворкам .

Архитектура LAMP стала популярной в веб-индустрии как способ развертывания веб-приложений. [285] PHP обычно используется как P в этом пакете наряду с Linux , Apache и MySQL , хотя P может также относиться к Python , Perl или их смеси. Аналогичные пакеты WAMP и MAMP также доступны для Windows и macOS , где первая буква обозначает соответствующую операционную систему. Хотя и PHP, и Apache включены в базовую установку macOS, пользователям этих пакетов нужен более простой механизм установки, который легче поддерживать в актуальном состоянии. [ нужна цитата ]

Для конкретных и более сложных сценариев использования PHP предлагает четко определенный и документированный способ написания пользовательских расширений на C или C++ . [286] [287] [288] [289] [290] [291] [292] [ нужен неосновной источник ] Помимо расширения самого языка в виде дополнительных библиотек , расширения предоставляют возможность повысить скорость выполнения там, где это критично, и есть возможности для улучшений за счет использования настоящего компилируемого языка . [293] [294] PHP также предлагает четко определенные способы встраивания в другие программные проекты. Таким образом, PHP можно легко использовать в качестве внутреннего языка сценариев проекта для другого проекта, обеспечивая при этом тесный интерфейс с конкретными внутренними структурами данных . [295]

PHP получил неоднозначные отзывы из-за отсутствия поддержки многопоточности на уровне ядра языка. [296] хотя использование потоков стало возможным благодаря расширению PECL «pthreads» . [297] [298]

интерфейс командной строки, php-cli и два скриптовых механизма ActiveX Windows Script Host для PHP. Были созданы [ нужна цитата ]

Статистика популярности и использования [ править ]

Доля использования версий PHP на 23 мая 2024 г.:
через шесть месяцев после выпуска PHP 8.3 [18] [299] [300] [301] [302]

  PHP 8.3: 3,80% от PHP 8 (1,12%)
  PHP 8.2: 19,8% от PHP 8 (5,84%)
  PHP 8.1: 42,3% от PHP 8 (12,48%)
  PHP 8.0: 34,1% от PHP 8 (10,06%)
  PHP 7.4: 69,5% PHP 7 (38,51%)
  PHP 7.3: 12,8% от PHP 7 (7,05%)
  PHP 7.2: 9,30% от PHP 7 (5,12%)
  PHP 7.1: 3,90% от PHP 7 (2,15%)
  PHP 7.0: 4,20% от PHP 7 (2,31%)
  PHP 5.6: 54,0% от PHP 5 (8,2620%)
  PHP 5.5: 8,40% от PHP 5 (1,2852%)
  PHP 5.4: 15,4% от PHP 5 (2,3562%)
  PHP 5.3: 14,8% от PHP 5 (2,2644%)
  PHP 5.2: 6,90% от PHP 5 (1,0557%)
  PHP 5.1: 0,40% от PHP 5 (0,0612%)
  PHP 5.0: 0,10% от PHP 5 (0,0153%)
  PHP 4.4: 78,6% от PHP 4 (0,1572%)
  PHP 4.3: 18,5% от PHP 4 (0,0370%)
  PHP 4.2: 1,70% от PHP 4 (0,0034%)
  PHP 4.1: 0,90% от PHP 4 (0,0018%)
  PHP 4.0: 0,40% от PHP 4 (0,0008%)

PHP используется для систем управления веб-контентом, включая MediaWiki , [303] WordPress , [304] Джумла , [305] Друпал , [306] Мудл , [307] eZ Publish , eZ Platform и SilverStripe . [308]

По состоянию на январь 2013 г. PHP использовался на более чем 240 миллионах веб-сайтов (39% из выборки) и был установлен на 2,1 миллиона веб-серверов . [309]

По состоянию на 23 апреля 2024 г. (через шесть месяцев после выпуска PHP 8.3) PHP используется в качестве серверного языка программирования на 76,2% веб-сайтов, язык которых можно определить; PHP 7 является наиболее используемой версией языка: 55,1% веб-сайтов, использующих PHP, используют эту версию, 29,5% используют PHP 8, 15,3% используют PHP 5 и 0,2% используют PHP 4. [18]

Безопасность [ править ]

В 2019 году 11% всех уязвимостей, перечисленных в Национальной базе данных уязвимостей, были связаны с PHP; [310] исторически около 30% всех уязвимостей, перечисленных в этой базе данных с 1996 года, связаны с PHP. Технические недостатки безопасности самого языка или его основных библиотек встречаются нечасто (22 в 2009 году, около 1% от общего числа, хотя PHP применим примерно к 20% перечисленных программ). [311] Признавая, что программисты допускают ошибки, некоторые языки включают проверку на наличие ошибок , чтобы автоматически обнаруживать отсутствие проверки ввода , что вызывает множество проблем. Такая функция разрабатывается для PHP, [312] но в прошлом его включение в релиз несколько раз отклонялось. [313] [314]

Существуют исправления расширенной защиты, такие как Suhosin и Hardening -Patch, специально разработанные для сред веб-хостинга. [315]

Исторически сложилось так, что старые версии PHP имели некоторые параметры конфигурации и значения по умолчанию для таких настроек времени выполнения, что делало некоторые приложения PHP уязвимыми к проблемам с безопасностью. Среди этих, magic_quotes_gpc и register_globals[316] директивы конфигурации были наиболее известны; последний превратил любые параметры URL-адреса в переменные PHP, открывая путь для серьезных уязвимостей безопасности, позволяя злоумышленнику устанавливать значение любой неинициализированной глобальной переменной и мешать выполнению PHP-скрипта. Поддержка настроек « волшебных кавычек » и «регистрации глобальных переменных» устарела, начиная с PHP 5.3.0, и удалена из PHP 5.4.0. [317]

Другой пример потенциальной уязвимости в настройках времени выполнения — невозможность отключить выполнение PHP (например, с помощью engine директива конфигурации) [318] для каталога, в котором хранятся загруженные файлы; его включение может привести к выполнению вредоносного кода, встроенного в загруженные файлы. [319] [320] [321] Лучше всего либо найти каталог изображений за пределами корня документа, доступного веб-серверу, и обслуживать его через промежуточный скрипт, либо отключить выполнение PHP для каталога, в котором хранятся загруженные файлы. [ нужна цитата ]

Кроме того, включение динамической загрузки расширений PHP (через enable_dl директива конфигурации) [322] в среде общего веб-хостинга может привести к проблемам с безопасностью. [323] [324]

Неявные преобразования типов , в результате которых разные значения рассматриваются как равные, иногда вопреки намерениям программиста, могут привести к проблемам безопасности. Например, результат сравнения '0e1234' == '0' является true, поскольку строки, которые можно анализировать как числа, преобразуются в числа; в этом случае первое сравниваемое значение рассматривается как экспоненциальное обозначение, имеющее значение ( 0 × 10 1234 ), что равно нулю. Подобные ошибки приводили к уязвимостям аутентификации на форуме Simple Machines , [325] Опечатка3 [326] и phpBB [327] при MD5 хешей паролей сравнении . Рекомендуемый способ — использовать hash_equals() (для безопасности атаки по времени ), strcmp или оператор идентификации ( ===), как '0e1234' === '0' приводит к false. [ нужна цитата ]

В анализе более 170 000 дефейсов веб-сайтов , опубликованном Zone-H в 2013 году , наиболее часто (53%) используемым методом была эксплуатация уязвимости включения файлов , в основном связанная с небезопасным использованием конструкций языка PHP. include, require, и allow_url_fopen. [328] [329]

По состоянию на 23 мая 2024 г. (через 6 месяцев после выпуска PHP 8.3) W3Techs сообщает, что 80,7% веб-сайтов, использующих PHP, используют версии 8.0 или старше (которые больше не поддерживаются командой разработчиков PHP). [330] PHP версии 5 по-прежнему используется на 15,3% всех веб-сайтов. [300] Настоятельно рекомендуется перейти на PHP 8.1 или более позднюю версию и использовать random_int()[331] вместо rand()[332] или mt_rand(), [333] поскольку последние функции не являются криптографически безопасными. Существует две атаки, которые можно осуществить на источники энтропии PHP: «начальная атака» и «атака восстановления состояния». [ нужна цитата ] По состоянию на 2012 год графический процессор стоимостью 250 долларов может выполнять до 2 30 Вычисления MD5 в секунду, а графический процессор стоимостью 750 долларов может выполнять в четыре раза больше вычислений одновременно. [334] В сочетании с « атакой дня рождения » это может привести к серьезным уязвимостям безопасности. [ нужна цитата ]

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б Лердорф, Расмус (8 июня 1995 г.). «Анонс: инструменты личной домашней страницы (инструменты PHP)» . Проверено 7 июня 2011 г.
  2. ^ Перейти обратно: а б Лердорф, Расмус (26 апреля 2007 г.). «PHP на гормонах - история презентации PHP Расмусом Лердорфом на конференции MySQL в Санта-Кларе, Калифорния» . Сеть разговоров. Архивировано из оригинала 6 января 2019 г. Проверено 11 декабря 2009 г.
  3. ^ «PHP: Архив новостей — 2024» . www.php.net .
  4. ^ «PHP: Аргументы функции – Руководство» . Secure.php.net .
  5. ^ «PHP: Архивы релизов (музей)» . музей.php.net .
  6. ^ «PHP: Предисловие – Руководство» .
  7. ^ Стогов Дмитрий [@dstogov] (4 декабря 2015). «Не секрет, что некоторые идеи по оптимизации #PHP7 пришли из HHVM, LuaJIT и V8. Спасибо @HipHopVM @SaraMG. #php7thankyou» ( твит ) – через Twitter .
  8. ^ «PHP: препроцессор гипертекста» . www.php.net . Проверено 12 февраля 2020 г.
  9. ^ Перейти обратно: а б Крил, Пол (18 ноября 2013 г.). «Верьте шумихе: основатель PHP поддерживает технологию Facebook HipHop» . Инфомир . Проверено 13 октября 2022 г.
  10. ^ «Анонс: инструменты личной домашней страницы (инструменты PHP)» . groups.google.com . Проверено 3 ноября 2022 г.
  11. ^ Перейти обратно: а б с д Это ж г час я «История PHP и связанных с ним проектов» . Группа PHP . Проверено 25 февраля 2008 г.
  12. ^ Перейти обратно: а б «История PHP» . php.net .
  13. ^ Олссон, Микаэль (04 сентября 2013 г.). Краткое руководство по написанию сценариев PHP . Апресс. ISBN  978-1-4302-6284-8 .
  14. ^ Руководство по PHP: Предисловие , www.php.net.
  15. ^ «Введение: что может PHP?» . Руководство по PHP . Проверено 5 марта 2009 г.
  16. ^ вертолет: порт node-ar-drone, который позволяет пользователю управлять дроном Parrot AR через PHP: jolicode/php-ar-drone , JoliCode, 11 января 2019 г. , получено 23 февраля 2019 г.
  17. ^ Перейти обратно: а б «Встраивание PHP в HTML» . О'Рейли. 3 мая 2001 г. Архивировано из оригинала 19 февраля 2008 г. Проверено 25 февраля 2008 г.
  18. ^ Перейти обратно: а б с «Статистика использования PHP для веб-сайтов» . W3Techs – Обзоры технологий Всемирной паутины . W3Techs . Проверено 23 мая 2024 г.
  19. ^ Лердорф, Расмус (20 июля 2012 г.). «Интересно, почему люди продолжают писать, что PHP когда-либо был написан на Perl. Этого никогда не было. #php» . Твиттер . Проверено 4 сентября 2014 г.
  20. ^ Лердорф, Расмус (26 апреля 2007 г.). «ПГП на гормонах» . Сеть разговоров. Архивировано из оригинала (mp3) 6 января 2019 г. Проверено 22 июня 2009 г.
  21. ^ Лердорф, Расмус (2007). «Слайд 3» . слайды к докладу «PHP о гормонах» . Группа PHP . Проверено 22 июня 2009 г.
  22. ^ Лердорф, Расмус (8 июня 1995 г.). «Анонс: инструменты личной домашней страницы (инструменты PHP)» . Группа новостей : comp.infosystems.www.authoring.cgi . Проверено 17 сентября 2006 г.
  23. ^ «Расмус Лердорф, старший технический специалист Yahoo: PHP, за микрофоном» . 19 ноября 2003 г. Архивировано из оригинала 28 июля 2013 г.
  24. ^ Альшетви, AB; Рахмат, РААО; Борхан, Миннесота; Исмаэль, С.; Али, А.; Иртема, ХИМ; Альфахрия, AY (2018). «Интернет-экспертная система для оптимизации дорожного движения в развивающихся странах» . Проверено 13 февраля 2024 г.
  25. ^ «Проблемы с PHP» . Проверено 20 декабря 2010 г.
  26. ^ "php.internals: Re: Согласованность имени функции" . news.php.net . 28 декабря 2013 г. Проверено 9 февраля 2014 г.
  27. ^ Расмус Лердорф (16 декабря 2013 г.). «Re: Гибкое именование функций» . Группа новостей : php.internals . Проверено 26 декабря 2013 г.
  28. ^ «PHP — аббревиатура, означающая голосование» . PHP.net . Архивировано из оригинала 15 августа 2000 года.
  29. ^ «Zend Engine версии 2.0: обзор функций и дизайн» . Zend Technologies Ltd. Архивировано из оригинала 19 июля 2006 г. Проверено 17 сентября 2006 г.
  30. ^ «Архив новостей php.net 2007» . Группа PHP. 13 июля 2007 г. Проверено 22 февраля 2008 г.
  31. ^ Кернер, Шон Майкл (1 февраля 2008 г.). «PHP 4 мертв — да здравствует PHP 5» . ИнтернетНовости. Архивировано из оригинала 6 августа 2018 г. Проверено 16 декабря 2018 г.
  32. ^ Трахтенберг, Адам (15 июля 2004 г.). «Почему PHP 5 потрясающий!» . О'Рейли. Архивировано из оригинала 31 марта 2016 г. Проверено 22 февраля 2008 г.
  33. ^ «Позднее статическое связывание в PHP» . Цифровой сэндвич. 23 февраля 2006 г. Проверено 25 марта 2008 г.
  34. ^ «Статическое ключевое слово» . Группа PHP . Проверено 25 марта 2008 г.
  35. ^ «GoPHP5» . Архивировано из оригинала 17 июля 2011 г.
  36. ^ «Проекты PHP объединяют усилия для перехода на PHP 5» (PDF) . Пресс-релиз GoPHP5 . Архивировано из оригинала (PDF) 4 августа 2019 г. Проверено 23 февраля 2008 г.
  37. ^ «GoPHP5» . GoPHP5. Архивировано из оригинала 27 апреля 2011 г. Проверено 22 февраля 2008 г.
  38. ^ «Установка и настройка PHP» . php.net . Проверено 29 октября 2013 г.
  39. ^ «PHP для Windows: выпуски двоичных файлов и исходного кода (5.3)» . php.net . Проверено 29 октября 2013 г.
  40. ^ «PHP для Windows: выпуски двоичных файлов и исходного кода (5.4)» . php.net . Проверено 29 октября 2013 г.
  41. ^ «PHP для Windows: выпуски двоичных файлов и исходного кода (5.5)» . php.net . Проверено 29 октября 2013 г.
  42. ^ «PHP: Поддерживаемые версии» .
  43. ^ «Типы: строки (Руководство PHP)» . PHP.net . Проверено 22 сентября 2013 г.
  44. ^ «Подробное описание строкового типа (Руководство по PHP)» . PHP.net . Проверено 22 сентября 2021 г.
  45. ^ Андрей Змиевский (10 августа 2005 г.). «Документ по проектированию поддержки PHP Unicode» (список рассылки) . Проверено 9 февраля 2014 г.
  46. ^ «PHP 5.5 или 6.0» . Проверено 9 февраля 2014 г.
  47. ^ Андрей Змиевский (22 апреля 2011 г.). «Хороший, плохой и злой: что случилось с Unicode и PHP 6» . Проверено 9 февраля 2014 г.
  48. ^ Расмус Лердорф (11 марта 2010 г.). «PHP 6» (список рассылки) . Проверено 7 февраля 2014 г.
  49. ^ «Бесконечные маппет-дебаты между PHP 6 и PHP 7» . Архивировано из оригинала 19 ноября 2015 г. Проверено 19 ноября 2015 г.
  50. ^ «RFC: название следующей версии PHP» . php.net . 07.07.2014 . Проверено 15 июля 2014 г.
  51. ^ «Re: [PHP-DEV] [VOTE] [RFC] Название следующей версии PHP (снова)» . 30 июля 2014 г. Проверено 30 июля 2014 г.
  52. ^ «phpng: обновленный PHP-движок с большим улучшением производительности» . news.php.net .
  53. ^ «PHP: rfc:phpng» . php.net . Проверено 16 декабря 2014 г.
  54. ^ Перейти обратно: а б «PHP: phpng» . php.net . Проверено 15 июля 2014 г.
  55. ^ «Объединить ветку ZendEngine3 » . github.com . 05.12.2014 . Проверено 5 декабря 2014 г.
  56. ^ Перейти обратно: а б с «PHP: Процесс выпуска» . 20 июня 2011 г. Проверено 6 октября 2013 г.
  57. ^ Перейти обратно: а б «PHP RFC: Исключения в движке (для PHP 7)» . php.net . Проверено 21 мая 2015 г.
  58. ^ Перейти обратно: а б «PHP RFC: унифицированный синтаксис переменных» . php.net . 31 мая 2014 г. Проверено 30 июля 2014 г.
  59. ^ «Онлайн-редактор PHP | вывод для udRhX» . 3v4l.org .
  60. ^ «PHP RFC: исправлено поведение «foreach»» . php.net . Проверено 21 мая 2015 г.
  61. ^ «PHP RFC: поведение конструктора внутренних классов» . php.net . Проверено 21 мая 2015 г.
  62. ^ «PHP RFC: Удаление мертвых или еще не перенесенных PHP7 SAPI и расширений» . php.net . Проверено 21 мая 2015 г.
  63. ^ «PHP RFC: исправлено несогласованность поведения list()» . php.net . Проверено 21 мая 2015 г.
  64. ^ «PHP RFC: удаление альтернативных тегов PHP» . php.net . Проверено 21 мая 2015 г.
  65. ^ «PHP RFC: сделать определение нескольких вариантов по умолчанию в переключателе синтаксической ошибкой» . php.net . Проверено 21 мая 2015 г.
  66. ^ «PHP RFC: удалить поддержку шестнадцатеричного формата в числовых строках» . php.net . Проверено 21 мая 2015 г.
  67. ^ Перейти обратно: а б «PHP RFC: целочисленная семантика» . php.net . Проверено 21 мая 2015 г. Если NaN и Infinity всегда становятся равными нулю при приведении к целому числу, это означает большую межплатформенную согласованность, а также менее удивительно, чем то, что происходит сейчас.
  68. ^ «PHP RFC: сбой ZPP при переполнении» . php.net . Проверено 21 мая 2015 г.
  69. ^ Перейти обратно: а б с «RFC: типы возвращаемых данных» . php.net . 27 января 2015 г. Проверено 28 января 2015 г.
  70. ^ Перейти обратно: а б с д Это ж «RFC: Объявления скалярного типа» . php.net . 16 марта 2015 г. Проверено 17 марта 2015 г.
  71. ^ Перейти обратно: а б с д Это ж г час я дж к л Брент. «Что нового в PHP 8» . Сшиватель . Проверено 22 сентября 2020 г.
  72. ^ Перейти обратно: а б «Выпущен PHP 8» . PHP . Проверено 27 ноября 2020 г.
  73. ^ Перейти обратно: а б «PHP: rfc:jit» . wiki.php.net . Проверено 5 апреля 2019 г.
  74. ^ Брент. «PHP 8: производительность JIT в реальных веб-приложениях» . Сшиватель.io . Проверено 4 октября 2020 г.
  75. ^ Ретемс, Дерик. «PHP 8: краткий обзор JIT» .
  76. ^ Перейти обратно: а б Попов, Никита (13 июля 2020 г.). « Что нового в PHP 8.0?» Никита Попов» . PHP по пятницам. Архивировано из оригинала 11 декабря 2021 г. Проверено 4 октября 2020 г.
  77. ^ Даниэле, Карло (25 мая 2020 г.). «Что нового в PHP 8 (функции, улучшения и JIT-компилятор)» . Кинста . Проверено 24 декабря 2020 г.
  78. ^ Редмонд, Пол (15 июля 2020 г.). «Выражение соответствия появится в PHP 8» . Новости Ларавел . Проверено 4 октября 2020 г.
  79. ^ «PHP 8.0: Сопоставление выражений» . PHP Смотреть . Проверено 4 октября 2020 г.
  80. ^ Барнс, Эрик (27 ноября 2020 г.). «PHP 8 уже выпущен!» . Новости Ларавел . Проверено 24 декабря 2020 г.
  81. ^ Перейти обратно: а б «PHP RFC: выражение throw» . wiki.php.net . Проверено 14 августа 2020 г. .
  82. ^ Перейти обратно: а б «PHP RFC: оператор Nullsafe» . wiki.php.net . Проверено 14 августа 2020 г. .
  83. ^ Русе, Брент. «PHP 8: Продвижение свойств конструктора» . Проверено 30 апреля 2024 г.
  84. ^ Перейти обратно: а б «PHP: rfc:weakrefs» . wiki.php.net . Проверено 5 апреля 2019 г.
  85. ^ Купец, Амит (13 июня 2020 г.). «Эти новые строковые функции появятся в PHP 8» . Амит Мерчант . Проверено 4 октября 2020 г.
  86. ^ Попов, Никита. «Призыв к участию: аннотирование внутренних аргументов функции и типов возвращаемых значений» . Внешние . Проверено 19 ноября 2020 г. .
  87. ^ «Журнал изменений PHP 8» . PHP.net . Проверено 5 января 2024 г.
  88. ^ «PHP: Объявление о выпуске PHP 8.1.0» . PHP.net . Проверено 5 января 2024 г.
  89. ^ «Журнал изменений PHP 8» . PHP.net . Проверено 5 января 2024 г.
  90. ^ «PHP: Объявление о выпуске PHP 8.2.0» . PHP.net . Проверено 5 января 2024 г.
  91. ^ Перейти обратно: а б с д Это ж г час я дж к л «Неподдерживаемые ветки» . php.net . Проверено 31 июля 2019 г.
  92. ^ «Выпущен PHP 4.0.0» . Проверено 25 октября 2020 г.
  93. ^ Перейти обратно: а б с д «PHP: Журнал изменений PHP 4» . Группа PHP. 3 января 2008 г. Проверено 22 февраля 2008 г.
  94. ^ «Объявление о выпуске PHP 4.1.0» . Проверено 25 октября 2020 г.
  95. ^ «Объявление о выпуске PHP 4.2.0» . Проверено 25 октября 2020 г.
  96. ^ «Объявление о выпуске PHP 4.3.0» . Проверено 25 октября 2020 г.
  97. ^ «Использование PHP из командной строки» . Руководство по PHP . Группа PHP . Проверено 11 сентября 2009 г.
  98. ^ «Объявление о выпуске PHP 4.4.0» . Проверено 25 октября 2020 г.
  99. ^ «Объявление о выпуске PHP 4.4.0» . Руководство по PHP . Группа PHP . Проверено 24 ноября 2013 г.
  100. ^ «Выпущен PHP 5.0.0!» . Проверено 25 октября 2020 г.
  101. ^ Перейти обратно: а б с «PHP: Журнал изменений PHP 5» . Группа PHP. 08.11.2007 . Проверено 22 февраля 2008 г.
  102. ^ «Объявление о выпуске PHP 5.1.0» . Проверено 25 октября 2020 г.
  103. ^ «Руководство PHP: PDO» . Группа PHP. 15 ноября 2011 г. Проверено 15 ноября 2011 г.
  104. ^ «Объявление о выпуске PHP 5.2.0» . Проверено 25 октября 2020 г.
  105. ^ «Объявление о выпуске PHP 5.3.0» . Проверено 25 октября 2020 г.
  106. ^ «Объявление о выпуске PHP 5.4.0» . Проверено 25 октября 2020 г.
  107. ^ «Встроенный веб-сервер» . Проверено 26 марта 2012 г.
  108. ^ «Объявление о выпуске PHP 5.5.0» . Проверено 25 октября 2020 г.
  109. ^ Перейти обратно: а б с д «Поддерживаемые версии» . php.net . Проверено 13 декабря 2017 г.
  110. ^ «Изменения PHP 5.5.0» . php.net . Проверено 3 марта 2015 г.
  111. ^ «Объявление о выпуске PHP 5.6.0» . Проверено 25 октября 2020 г.
  112. ^ «Миграция с PHP 5.5.x на PHP 5.6.x» . php.net . Проверено 24 марта 2014 г.
  113. ^ «Сброс PHP 6» . На полках лежат книги, посвященные PHP 6, по крайней мере, с 2008 года. Но в марте 2010 года версия PHP 6 еще не вышла – на самом деле, она даже не близка к выходу. Недавние события позволяют предположить, что PHP 6 не будет выпущен раньше 2011 года – если он вообще будет выпущен.
  114. ^ «PHP 7 движется вперед на полной скорости» . 31 октября 2014 г. Последние версии PHP были частью серии выпусков 5.x, но PHP 6 не будет. «Мы собираемся пропустить [версию] 6, потому что много лет назад у нас были планы на 6, но эти планы были очень отличается от того, что мы делаем сейчас», — сказал Гутманс. Переход сразу к версии 7 позволит избежать путаницы.
  115. ^ «Архив новостей – 2018: Выпущен PHP 7.2.9» . php.net . 16 августа 2018 г. Проверено 16 августа 2018 г.
  116. ^ «PHP: rfc:size_t_and_int64_next» . php.net . Проверено 16 декабря 2014 г.
  117. ^ «PHP: rfc:abstract_syntax_tree» . php.net . Проверено 16 декабря 2014 г.
  118. ^ «PHP: rfc:closure_apply» . php.net . Проверено 16 декабря 2014 г.
  119. ^ «PHP: rfc:integer_semantics» . php.net . Проверено 16 декабря 2014 г.
  120. ^ «PHP: rfc:isset_ternary» . php.net . Проверено 16 декабря 2014 г.
  121. ^ «RFC: синтаксис escape-кода Unicode» . 24 ноября 2014 г. Проверено 19 декабря 2014 г.
  122. ^ «Оператор комбинированного сравнения (космического корабля)» . php.net . Проверено 21 мая 2015 г.
  123. ^ «PHP RFC: делегирование генератора» . php.net . Проверено 21 мая 2015 г.
  124. ^ «PHP RFC: анонимные классы» . php.net . Проверено 21 мая 2015 г.
  125. ^ «PHP RFC: простой CSPRNG для пользователя» . php.net . Проверено 21 мая 2015 г.
  126. ^ «PHP RFC: декларации группового использования» . php.net . Проверено 21 мая 2015 г.
  127. ^ «PHP: rfc:iterable» . php.net . 10.06.2016 . Проверено 30 июня 2023 г.
  128. ^ «PHP: rfc:nullable_types» . php.net . 10 апреля 2014 г. Проверено 30 июня 2023 г.
  129. ^ «PHP: rfc:void_return_type» . php.net . 09.11.2015 . Проверено 14 ноября 2015 г.
  130. ^ «PHP: rfc:class_constant_visibility» . php.net . 27 октября 2015 г. Проверено 8 декабря 2015 г.
  131. ^ «PHP: rfc:short_list_syntax» . php.net . 07.04.2016 . Проверено 30 июня 2023 г.
  132. ^ «PHP: rfc:multiple-catch» . php.net . 06.03.2016 . Проверено 30 июня 2023 г.
  133. ^ «PHP: rfc:object-typehint» . wiki.php.net .
  134. ^ «PHP: rfc:libsodium» . wiki.php.net .
  135. ^ «PHP: rfc:allow-abstract-function-override» . wiki.php.net .
  136. ^ «PHP: rfc:parameter-no-type-variance» . wiki.php.net .
  137. ^ «PHP: todo:php73» . wiki.php.net .
  138. ^ «PHP: rfc:flexible_heredoc_nowdoc_syntaxes» . wiki.php.net .
  139. ^ «PHP: rfc:list_reference_assignment» . wiki.php.net .
  140. ^ «PHP: rfc:pcre2-миграция» . wiki.php.net .
  141. ^ «PHP: hrtime – Руководство» . php.net .
  142. ^ «Выпущен PHP 7.4.0!» . php.net . Проверено 28 ноября 2019 г.
  143. ^ «PHP: rfc:typed_properties_v2» . wiki.php.net . Проверено 4 апреля 2019 г.
  144. ^ «PHP: rfc:preload» . wiki.php.net . Проверено 4 апреля 2019 г.
  145. ^ «PHP: rfc:null_coalesce_equal_operator» . wiki.php.net . Проверено 4 апреля 2019 г.
  146. ^ «PHP: rfc:improve-openssl-random-pseudo-bytes» . wiki.php.net . Проверено 4 апреля 2019 г.
  147. ^ «PHP: rfc:ffi» . wiki.php.net . Проверено 5 апреля 2019 г.
  148. ^ «PHP: rfc:permanent_hash_ext» . wiki.php.net . Проверено 5 апреля 2019 г.
  149. ^ «PHP: rfc:password_registry» . wiki.php.net . Проверено 5 апреля 2019 г.
  150. ^ «PHP: rfc:mb_str_split» . wiki.php.net . Проверено 5 апреля 2019 г.
  151. ^ «PHP: rfc:reference_reflection» . wiki.php.net . Проверено 5 апреля 2019 г.
  152. ^ «PHP: rfc:deprecate-and-remove-ext-wddx» . wiki.php.net . Проверено 5 апреля 2019 г.
  153. ^ «PHP: rfc:custom_object_serialization» . wiki.php.net . Проверено 5 апреля 2019 г.
  154. ^ «PHP: Поддерживаемые версии» . php.net . Проверено 26 ноября 2023 г.
  155. ^ «PHP: rfc:negative_array_index» . wiki.php.net . Проверено 5 апреля 2019 г.
  156. ^ «PHP RFC: проверка абстрактных методов свойств» . wiki.php.net . Проверено 14 августа 2020 г. .
  157. ^ «PHP RFC: более разумное сравнение строк и чисел» . wiki.php.net . Проверено 14 августа 2020 г. .
  158. ^ «PHP RFC: более разумные числовые строки» . wiki.php.net . Проверено 14 августа 2020 г. .
  159. ^ «PHP RFC: более строгие проверки типов для арифметических/побитовых операторов» . wiki.php.net . Проверено 14 августа 2020 г. .
  160. ^ «PHP RFC: реклассификация предупреждений модуля» . wiki.php.net . Проверено 14 августа 2020 г. .
  161. ^ «PHP: rfc:consistent_type_errors» . wiki.php.net . Проверено 5 апреля 2019 г.
  162. ^ «PHP: rfc:lsp_errors» . wiki.php.net . Проверено 26 мая 2019 г.
  163. ^ «PHP RFC: независимое от локали преобразование числа с плавающей запятой в строку» . wiki.php.net . Проверено 14 августа 2020 г. .
  164. ^ «PHP RFC: настройки синтаксиса переменных» . wiki.php.net . Проверено 14 августа 2020 г. .
  165. ^ «PHP RFC: Атрибуты V2» . wiki.php.net . Проверено 14 августа 2020 г. .
  166. ^ «PHP RFC: поправки к атрибутам» . wiki.php.net . Проверено 14 августа 2020 г. .
  167. ^ «PHP RFC: сокращенный синтаксис атрибутов» . wiki.php.net . Проверено 20 июня 2020 г.
  168. ^ «PHP RFC: изменение синтаксиса более коротких атрибутов» . wiki.php.net . Проверено 14 августа 2020 г. .
  169. ^ «PHP RFC: именованные аргументы» . wiki.php.net . Проверено 14 августа 2020 г. .
  170. ^ «PHP RFC: выражение соответствия v2» . wiki.php.net . Проверено 14 августа 2020 г. .
  171. ^ «PHP RFC: продвижение свойств конструктора» . wiki.php.net . Проверено 14 августа 2020 г. .
  172. ^ «PHP RFC: типы объединения 2.0» . wiki.php.net . Проверено 14 августа 2020 г. .
  173. ^ «PHP RFC: смешанный тип v2» . wiki.php.net . Проверено 14 августа 2020 г. .
  174. ^ «PHP RFC: статический тип возвращаемого значения» . wiki.php.net . Проверено 14 августа 2020 г. .
  175. ^ «PHP RFC: уловы без захвата» . wiki.php.net . Проверено 14 августа 2020 г. .
  176. ^ Андре, Тайсон. «PHP RFC: всегда доступное расширение JSON» . PHP . Проверено 25 октября 2020 г.
  177. ^ «PHP: todo:php81» . wiki.php.net . Проверено 16 июня 2022 г.
  178. ^ «PHP RFC: явная запись восьмеричного целого числа» . wiki.php.net . Проверено 25 ноября 2020 г.
  179. ^ «PHP RFC: перечисления» . wiki.php.net . Проверено 25 марта 2021 г.
  180. ^ «PHP: rfc:readonly_properties_v2» . wiki.php.net . Проверено 26 ноября 2021 г.
  181. ^ «PHP: rfc:first_class_callable_syntax» . wiki.php.net . Проверено 26 ноября 2021 г.
  182. ^ «PHP: rfc:new_in_initializers» . wiki.php.net . Проверено 26 ноября 2021 г.
  183. ^ «PHP: rfc:pure-intersection-types» . wiki.php.net . Проверено 26 ноября 2021 г.
  184. ^ «PHP: rfc:noreturn_type» . wiki.php.net . Проверено 26 ноября 2021 г.
  185. ^ «PHP: rfc:final_class_const» . wiki.php.net . Проверено 26 ноября 2021 г.
  186. ^ «PHP: rfc:fibers» . wiki.php.net . Проверено 26 ноября 2021 г.
  187. ^ «PHP: todo:php82» . wiki.php.net . Проверено 16 июня 2022 г.
  188. ^ «PHP: rfc:readonly_classes» . wiki.php.net . Проверено 16 июня 2022 г.
  189. ^ «PHP: rfc:null-false-standalone-types» . wiki.php.net . Проверено 16 июня 2022 г.
  190. ^ «PHP: rfc:true-type» . wiki.php.net . Проверено 16 июня 2022 г.
  191. ^ «PHP: rfc:strtolower-ascii» . wiki.php.net . Проверено 16 июня 2022 г.
  192. ^ «PHP: rfc:dnf_types» . wiki.php.net . Проверено 7 февраля 2023 г.
  193. ^ «PHP: rfc:constants_in_traits» . wiki.php.net . Проверено 7 февраля 2023 г.
  194. ^ «Выпущен PHP 8.3.0!» . php.net . 23 ноября 2023 г. Проверено 24 ноября 2023 г.
  195. ^ «PHP: rfc:typed_class_constants» . wiki.php.net . Проверено 17 декабря 2023 г.
  196. ^ «PHP: rfc:dynamic_class_constant_fetch» ​​. wiki.php.net . Проверено 17 декабря 2023 г.
  197. ^ «PHP: rfc:marking_overriden_methods» . wiki.php.net . Проверено 17 декабря 2023 г.
  198. ^ «PHP: rfc:readonly_amendments» . wiki.php.net . Проверено 17 декабря 2023 г.
  199. ^ «PHP: rfc:json_validate» . wiki.php.net . Проверено 17 декабря 2023 г.
  200. ^ «PHP: rfc:randomizer_additions» . wiki.php.net . Проверено 17 декабря 2023 г.
  201. ^ «PHP: задача: php84» . php.net . 26 марта 2024 г. Проверено 26 марта 2024 г.
  202. ^ «PHP: ЭлеPHPant» . 4 октября 2014 г. Проверено 4 октября 2014 г.
  203. ^ «Перенаправление…» . wwwphp-fb.github.io .
  204. ^ «Рождение талисмана PHP — создатель elePHPant Винсент Понтье раскрывает правдивую историю!» . 7php.com . 06 января 2014 г.
  205. ^ «ЭлеФПант» . PHP.земля . Проверено 13 февраля 2024 г.
  206. ^ «PHP: ЭлеPHPant» . www.php.net .
  207. ^ «Полевой справочник по слонам» . afieldguidetoelephpants.net .
  208. ^ «теги – Руководство» . php.net . Проверено 17 февраля 2014 г.
  209. ^ Перейти обратно: а б «PHP: rfc:shorttags» . php.net . 3 апреля 2008 г. Проверено 8 мая 2014 г.
  210. ^ «PHP: Основной синтаксис» . Группа PHP . Проверено 22 февраля 2008 г.
  211. ^ «Базовый стандарт кодирования» . Группа совместимости PHP Framework . Проверено 03 января 2016 г.
  212. ^ «эхо – Руководство» . php.net . Проверено 17 февраля 2014 г.
  213. ^ «Описание основных директив php.ini – Руководство» . php.net . 17 марта 2002 г. Проверено 17 февраля 2014 г.
  214. ^ «Ваша первая страница с поддержкой PHP» . Группа PHP . Проверено 25 февраля 2008 г.
  215. ^ Брей, Тим; и другие. (26 ноября 2008 г.). «Инструкция по обработке» . Расширяемый язык разметки (XML) 1.0 (пятое издание) . W3C . Проверено 18 июня 2009 г.
  216. ^ «Переменные» . Группа PHP . Проверено 16 марта 2008 г.
  217. ^ «Разделение инструкций» . Группа PHP . Проверено 16 марта 2008 г.
  218. ^ "Комментарии" . Группа PHP . Проверено 16 марта 2008 г.
  219. ^ «Целые числа в PHP, работа с ножницами и переносимость» . Блог о производительности MySQL. 27 марта 2007 года . Проверено 28 марта 2007 г.
  220. ^ Перейти обратно: а б с д Это «Типы» . Группа PHP . Проверено 16 марта 2008 г.
  221. ^ «Струны» . Группа PHP . Проверено 21 марта 2008 г.
  222. ^ «SPL – Стандартная библиотека PHP» . PHP.net . 16 марта 2009 года . Проверено 16 марта 2009 г.
  223. ^ Перейти обратно: а б «Пользовательские функции (руководство по PHP)» . php.net . 04 июля 2014 г. Проверено 7 июля 2014 г.
  224. ^ Перейти обратно: а б «Функции переменных (руководство PHP)» . php.net . 04 июля 2014 г. Проверено 7 июля 2014 г.
  225. ^ «create_function() (руководство по PHP)» . php.net . 06.04.2022 . Проверено 4 мая 2022 г.
  226. ^ «Анонимные функции (руководство PHP)» . php.net . 04 июля 2014 г. Проверено 7 июля 2014 г.
  227. ^ «Стрелочные функции (руководство по PHP)» . php.net . Проверено 25 января 2021 г.
  228. ^ Кристиан Зейлер; Дмитрий Стогов (01.07.2008). «Запрос комментариев: Лямбда-функции и замыкания» . php.net . Проверено 7 июля 2014 г.
  229. ^ Перейти обратно: а б «Ссылки на объекты PHP 5» . mjtsai.com . Проверено 16 марта 2008 г.
  230. ^ «Классы и объекты (PHP 5)» . Группа PHP . Проверено 16 марта 2008 г.
  231. ^ «Клонирование объектов» . Группа PHP . Проверено 16 марта 2008 г.
  232. ^ «Видимость (Руководство PHP)» . theserverpages.com . 19 мая 2005 г. Архивировано из оригинала 24 сентября 2010 г. Проверено 26 августа 2010 г.
  233. ^ «Как работают компьютерные языки?» . Архивировано из оригинала 16 июля 2011 г. Проверено 4 ноября 2009 г.
  234. ^ Гилмор, В. Джейсон (23 января 2006 г.). Начало PHP и MySQL 5: от новичка до профессионала . Апресс. п. 43 . ISBN  1590595521 .
  235. ^ «[ГОЛОСОВАНИЕ] Интеграция Zend Optimizer+ в дистрибутив PHP» . news.php.net . Проверено 8 марта 2013 г.
  236. ^ «Альтернативный PHP-кеш» . PHP.net . Архивировано из оригинала 15 ноября 2013 г. Проверено 21 сентября 2013 г.
  237. ^ «На 98,5% (и на 16%) мы — «виртуальная машина хип-хопа» . hhvm.com . Декабрь 2013 . Проверено 23 февраля 2014 г.
  238. ^ «Окончательные тесты PHP 5.6, 7.0, 7.1, 7.2 и 7.3 (2019)» . 14 января 2019 г. Проверено 19 апреля 2019 г.
  239. ^ Криль, Пол (20 сентября 2017 г.). «Забудьте о PHP! Вместо этого движок HHVM Facebook переключается на Hack» . Инфомир . Проверено 06 февраля 2019 г.
  240. ^ «Объявление об удалении GitHub поддержки HPHPc» . Гитхаб . Проверено 24 мая 2013 г.
  241. ^ «Лицензия PHP, версия 3.01» . Проверено 20 мая 2010 г.
  242. ^ «Лицензии свободного программного обеспечения, несовместимые с GPL» . Различные лицензии и комментарии к ним . Фонд свободного программного обеспечения . Проверено 3 января 2011 г.
  243. ^ «PHP: Список функций и методов – Руководство» . Группа PHP . Проверено 14 января 2015 г.
  244. ^ «Введение – Руководство» . php.net . 07.06.2013 . Проверено 13 июня 2013 г.
  245. ^ Дэррил Паттерсон (5 августа 2004 г.). «Упрощение бизнес-логики с помощью PHP DataObjects — O'Reilly Media» . IBM.com . Архивировано из оригинала 16 декабря 2014 года . Проверено 16 декабря 2014 г.
  246. ^ «ИБМ — США» . Проверено 16 декабря 2014 г.
  247. ^ «Пять распространенных проблем с базами данных PHP» . IBM.com . 01 августа 2006 г. Проверено 13 июня 2013 г.
  248. ^ «Справочники IBM — Разработка приложений PHP для серверов данных IBM» . redbooks.ibm.com . Проверено 16 декабря 2014 г.
  249. ^ «Журнал php[architect] — журнал для PHP-программистов» . www.phparch.com .
  250. ^ Крил, Пол (19 октября 2005 г.). «PHP завоевывает популярность на предприятиях, конкурируя с Java» . Инфомир . Архивировано из оригинала 13 июля 2014 года.
  251. ^ «Перекрестная ссылка: /PHP_5_4/ext/standard/» . php.net . Архивировано из оригинала 16 марта 2012 года . Проверено 16 декабря 2014 г.
  252. ^ «Разработка пользовательских расширений PHP» . devnewz.com . 9 сентября 2002 г. Архивировано из оригинала 18 февраля 2008 г. Проверено 25 февраля 2008 г.
  253. ^ «Почему Зефир?» . zephir-lang.com . 20 октября 2015 г. Проверено 14 декабря 2015 г.
  254. ^ «Кредиты PHP» . Проверено 16 декабря 2018 г.
  255. ^ «Изучите PHP посредством обучения PHP и сертификации PHP» . www.zend.com . Проверено 16 ноября 2020 г.
  256. ^ Уокер, Джеймс (13 декабря 2021 г.). «Что новый фонд PHP означает для будущего PHP» . Как компьютерщик . Проверено 26 ноября 2023 г.
  257. ^ «Новая жизнь PHP – PHP Foundation | Блог PhpStorm» . Блог JetBrains . 22 ноября 2021 г. Проверено 16 июня 2022 г.
  258. ^ «Фонд PHP: Отчет о влиянии и прозрачности 2022» . thephp.foundation . Проверено 27 ноября 2023 г.
  259. ^ Пронский, Роман (26 февраля 2024 г.). «Фонд PHP: отчет о влиянии и прозрачности 2023» . Фонд PHP . Проверено 1 апреля 2024 г.
  260. ^ Андерсон, Тим. «Фонд PHP создан для финансирования основных разработчиков» . www.theregister.com . Проверено 5 декабря 2023 г.
  261. ^ «Языки программирования: этот старый фаворит снова набирает популярность» . ЗДНЕТ . Проверено 5 декабря 2023 г.
  262. ^ «Выпущен PHP 8.1 с перечислениями, свойствами только для чтения и волокнами» . www.i-programmer.info . Проверено 5 декабря 2023 г.
  263. ^ «Пришло время PHP Foundation #StopBreakingPHP» . тронгейт ио . Проверено 27 ноября 2023 г.
  264. ^ «Совместимость WordPress 6.4 с PHP» . Сделать хостинг WordPress . 16 ноября 2023 г. Проверено 27 ноября 2023 г.
  265. ^ «ПХП» . Суверенный технологический фонд . Проверено 26 мая 2024 г.
  266. ^ Перейти обратно: а б «Общие рекомендации по установке» . php.net . Проверено 22 сентября 2013 г.
  267. ^ «Архив новостей: Выпущен PHP 5.3.3!» . php.net . 22 июля 2010 г.
  268. ^ «Диспетчер процессов FastCGI (FPM)» . php.net . Проверено 22 сентября 2013 г.
  269. ^ «Использование командной строки: Введение» . php.net . Проверено 22 сентября 2013 г.
  270. ^ «Использование командной строки: отличия от других SAPI» . php.net . Проверено 22 сентября 2013 г.
  271. ^ Перейти обратно: а б «Общие рекомендации по установке» . php.net . Проверено 22 сентября 2013 г.
  272. ^ «PHP: Apache 2.x в Microsoft Windows» . php.net . Архивировано из оригинала 26 сентября 2013 г. Проверено 22 сентября 2013 г.
  273. ^ «Использование командной строки: Введение» . php.net . Проверено 22 сентября 2013 г.
  274. ^ «Установка PHP-GTK 2» . php.net . Проверено 22 сентября 2013 г.
  275. ^ «AWS SDK для PHP» . aws.amazon.com . Проверено 6 марта 2014 г.
  276. ^ «Windows Azure SDK для PHP — мосты взаимодействия и лабораторный центр» . interoperabilitybridges.com . Архивировано из оригинала 20 марта 2014 г. Проверено 6 марта 2014 г.
  277. ^ «Конфигурация времени выполнения: Содержание» . php.net . Проверено 22 сентября 2013 г.
  278. ^ «Директивы php.ini: Список директив php.ini» . php.net . Проверено 22 сентября 2013 г.
  279. ^ «Конфигурация времени выполнения: файл конфигурации» . PHP.net . Проверено 22 сентября 2013 г.
  280. ^ «Директивы php.ini: Список разделов php.ini» . PHP.net . Проверено 22 сентября 2013 г.
  281. ^ «Конфигурация времени выполнения: где можно установить параметр конфигурации» . PHP.net . Проверено 22 сентября 2013 г.
  282. ^ «Ручная обработка изображений PHP и GD»; . php.net . Проверено 9 апреля 2011 г.
  283. ^ «Язык сценариев PHP на стороне сервера» . Университет Индианы . 04 апреля 2007 г. Архивировано из оригинала 21 января 2016 г. Проверено 25 февраля 2008 г.
  284. ^ «Технология JavaServer Pages — методы сравнения JavaServer Pages для серверного динамического контента» . Сан Микросистемс . Проверено 25 февраля 2008 г.
  285. ^ «Пять простых способов настроить приложение LAMP» . ИБМ . 25 января 2011 г.
  286. ^ «Ядро PHP: структура расширения» . PHP.net . Проверено 22 сентября 2013 г.
  287. ^ «Ядро PHP: расширение «счетчик» — продолжающийся пример» . PHP.net . Проверено 22 сентября 2013 г.
  288. ^ «Написание расширений, часть I: Введение в PHP и Zend» . Зенд Технологии . 01.03.2005. Архивировано из оригинала 24 сентября 2013 г. Проверено 22 сентября 2013 г.
  289. ^ «Написание расширений, часть II: параметры, массивы и ZVAL» . Зенд Технологии . 06.06.2005. Архивировано из оригинала 26 сентября 2013 г. Проверено 22 сентября 2013 г.
  290. ^ «Написание расширений, часть II: Параметры, массивы и ZVAL (продолжение)» . Зенд Технологии . 6 июня 2005 г. Архивировано из оригинала 26 сентября 2013 г. Проверено 22 сентября 2013 г.
  291. ^ «Написание расширений, часть III: Ресурсы» . Зенд Технологии . 12 мая 2006 г. Архивировано из оригинала 26 сентября 2013 г. Проверено 22 сентября 2013 г.
  292. ^ «Обертывание классов C++ в расширение PHP» . Зенд Технологии . 22 апреля 2009 г. Архивировано из оригинала 20 сентября 2013 г. Проверено 22 сентября 2013 г.
  293. ^ «Расширение PHP с помощью C++?» . Переполнение стека . Проверено 22 сентября 2013 г.
  294. ^ «Как я могу использовать код C++ для взаимодействия с PHP?» . Переполнение стека . Проверено 22 сентября 2013 г.
  295. ^ Големон, Сара (2006). Расширение и встраивание PHP . Сэмс. ISBN  978-0-672-32704-9 .
  296. ^ «Запрос № 46919: Многопоточность» . PHP.net . Проверено 22 сентября 2013 г.
  297. ^ «pthreads: Введение (Руководство по PHP)» . PHP.net . Проверено 22 сентября 2013 г.
  298. ^ «PECL::Пакет::pthreads» . pecl.php.net . Проверено 9 февраля 2014 г.
  299. ^ «Статистика использования и рыночная доля PHP версии 4 для веб-сайтов, май 2024 г.» . w3techs.com .
  300. ^ Перейти обратно: а б «Статистика использования и рыночная доля PHP версии 5 для веб-сайтов, май 2024 г.» . w3techs.com .
  301. ^ «Статистика использования и рыночная доля PHP версии 7 для веб-сайтов, май 2024 г.» . w3techs.com .
  302. ^ «Статистика использования и рыночная доля PHP версии 8 для веб-сайтов, май 2024 г.» . w3techs.com .
  303. ^ «Руководство:Требования к установке#PHP» . МедиаВики. 25 января 2010 г. Проверено 26 февраля 2010 г. PHP — это язык программирования, на котором написан MediaWiki [...]
  304. ^ «О WordPress» . Проверено 26 февраля 2010 г. WordPress был [...] построен на PHP
  305. ^ Кемпкенс, Алекс. «Joomla! — система управления контентом для создания веб-сайтов и приложений» .
  306. ^ «PHP и Друпал» . Друпал.орг. 16 сентября 2007 года . Проверено 13 июня 2010 г.
  307. ^ "О" . Мудл.орг . Проверено 20 декабря 2009 г.
  308. ^ «Требования к серверу SilverStripe» . Архивировано из оригинала 28 ноября 2014 года . Проверено 13 октября 2014 г. SilverStripe требует PHP 5.3.2+.
  309. ^ Иде, Энди (31 января 2013 г.). «PHP просто растет и растет» . Проверено 1 апреля 2013 г.
  310. ^ «Национальная база данных уязвимостей (NVD) по поиску статистики уязвимостей» . Проверено 22 ноября 2019 г.
  311. ^ «PHP: rfc:taint» . wiki.php.net .
  312. ^ «Заметки о совещании разработчиков, ноябрь 2005 г.» .
  313. ^ «Решение о режиме Taint, ноябрь 2007 г.» . Архивировано из оригинала 26 февраля 2009 г.
  314. ^ «Проект Hardened-PHP» . 15 августа 2008 г. Архивировано из оригинала 24 февраля 2019 г. Проверено 22 августа 2019 г.
  315. ^ «Безопасность: использование глобальных переменных регистрации» . Руководство по PHP . PHP.net . Проверено 22 сентября 2013 г.
  316. ^ «Волшебные цитаты» . Руководство по PHP . PHP.net . Проверено 17 января 2014 г.
  317. ^ « Директива конфигурации «движка»» . PHP: Конфигурация времени выполнения . PHP.net . Проверено 13 февраля 2014 г.
  318. ^ «Эксплойт безопасности PHP с изображениями GIF» . 22 июня 2007 г. Архивировано из оригинала 27 сентября 2013 г. Проверено 22 сентября 2013 г.
  319. ^ «Эксплойт безопасности PHP с изображениями GIF» . Блог классов PHP. 20 июня 2007 г. Проверено 22 сентября 2013 г.
  320. ^ «Передача вредоносного PHP через getimagesize()» . 04.06.2007. Архивировано из оригинала 21 сентября 2013 г. Проверено 22 сентября 2013 г.
  321. ^ « Директива конфигурации ‘enable_dl’» . PHP: Конфигурация времени выполнения . PHP.net . Проверено 13 февраля 2014 г.
  322. ^ «Ссылка на функцию PHP: dl()» . PHP.net . Проверено 22 сентября 2013 г.
  323. ^ «Мой хост не исправит свой троян» . Разговор о веб-хостинге . Проверено 22 сентября 2013 г.
  324. ^ Раз0р (25 января 2013 г.). «Форум Simple Machines <= 2.0.3 Сброс пароля администратора» . {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  325. ^ Ниббл Безопасность. «TYPO3-SA-2010-020, TYPO3-SA-2010-022 ОБЪЯСНЕНИЕ» .
  326. ^ "Криптостойкость и небезопасное сравнение" . ahack.ru (in Russian). Archived from the original on 4 July 2017. {{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  327. ^ Кравчик, Павел (2013). «Наиболее распространенные атаки на веб-приложения» . IPSec.pl. Архивировано из оригинала 15 апреля 2015 г. Проверено 15 апреля 2015 г.
  328. ^ Кравчик, Павел (2013). «Итак, каковы «самые критичные» недостатки приложений? В новом рейтинге OWASP Top 10» . IPSec.pl . Проверено 15 апреля 2015 г.
  329. ^ «Статистика использования и доля рынка PHP для веб-сайтов, май 2024 г.» . w3techs.com . Проверено 23 мая 2024 г.
  330. ^ «PHP: Random_int — Руководство» .
  331. ^ «PHP: Rand — Руководство» .
  332. ^ «PHP: Mt_rand — Руководство» .
  333. ^ Аргирос, Джордж; Киайас, Аггелос. «Я забыл ваш пароль: случайные атаки на PHP-приложения» . usenix.org . УСЕНИКС . Проверено 19 апреля 2024 г.

Дальнейшее чтение [ править ]

Послушайте эту статью ( 35 минут )
Продолжительность: 35 минут и 4 секунды.
Разговорная иконка Википедии
Этот аудиофайл был создан на основе редакции этой статьи от 23 ноября 2011 г. ( 2011-11-23 ) и не отражает последующие изменения.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 1C3BC46B952FED096B3D9883CB4ED25E__1718057820
URL1:https://en.wikipedia.org/wiki/PHP
Заголовок, (Title) документа по адресу, URL1:
PHP - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)