PHP: Основная информация
У этого термина существуют и другие значения, см. PHP (значения).
Основные характеристики PHP
- Класс языка: сценарный
- Разработчик: The PHP Development Team
- Первый выпуск: 1995 год
- Расширение файлов: .php, .phtml, .php3, .php4, .php5, .php7, .php8
- Испытал влияние: C, Java, Perl, TCL
- ОС: Unix-подобная операционная система
- Медиафайлы на Викискладе
Использование PHP
В области веб-программирования, в частности серверной части, PHP является одним из популярных сценарных языков. Вместе с JSP, Perl и языками, используемыми в ASP.NET, PHP широко используется для разработки веб-приложений.
Системы и фреймворки, написанные на PHP
На PHP написаны такие системы управления сайтами (CMS) и фреймворки (CMF), как Drupal, Joomla, Laravel, Symfony, WordPress, Yii и другие.
Версии PHP и статистика использования
Последняя версия ветви PHP: 8.3
Версия PHP | Доля использования |
---|---|
PHP 8.3 | 1,12% |
PHP 8.2 | 5,84% |
PHP 8.1 | 12,48% |
PHP 8.0 | 10,06% |
PHP LTS (Long Term Support)
Zend предлагает платную активную долгосрочную поддержку для версий PHP LTS. Действующие версии PHP LTS:
- PHP 8.3 (До ноября 2028)
- PHP 8.2 (До декабря 2027)
- PHP 8.1 (До ноября 2026)
- PHP 8.0 (До декабря 2025)
- PHP 7.4 (До декабря 2026)
- PHP 7.3 (До июля 2024)
Использование HTTP Cookies в PHP
PHP автоматически поддерживает HTTP Cookies в соответствии со стандартами Netscape. Это позволяет проводить установку и чтение небольших сегментов данных на стороне клиента. Работа с Cookies организована посредством сеансов (сессий), имеющих срок действия и возможность хранить различные типы данных, включая сериализованные PHP-объекты.
## PHP и десктопные приложения
PHP не ориентирован на создание десктопных приложений, однако существует спрос на создание интерфейсов для различных целей, таких как настройка серверов, отладка скриптов, управление локальными и тестовыми серверами и другие. В связи с этим возникли различные решения данной проблемы.
## Использование расширений
Основное применение расширений PHP связано с расширением интерфейсов пользователя (UI-библиотек).
### Группы расширений:
1. Расширения для использования других языков при написании PHP расширений.
2. Полноценные среды разработки для GUI PHP.
## Примеры расширений
### PSV Component Library
Этот проект состоит из трёх подпроектов и представляет собой двустороннюю обёртку для использования других языков.
### Dev PHP-IDE
Первопроходец в категории сред разработки для GUI PHP. Использовала Kylix (Delphi) в качестве основы интерфейса и php-cli для создания пользовательских программ.
## Расширения для CodeGear Rad Studio 2009 и RADPHP Xe
Набор компонентов для CodeGear Rad Studio 2009 был создан на базе php4delphi. С выходом Delphi XE расширение получило название RADPHP Xe.
## PHP DevelStudio
Среда для создания графических PHP-приложений, первой версией стала 0.1.7. Имела ограниченное количество компонентов и работала на PHP 4. Вторая версия стала поддерживать PHP 5, добавлены потоки, произведены различные улучшения.
## Проблемы с AlphaControls
Beta-версия DevelStudio содержала набор компонентов AlphaControls, который использовался для создания вредоносных программ. Популярные антивирусы начали распознавать программы, скомпилированные в DevelStudio, как вирусы. После жалобы автора AlphaControls, набор компонентов был полностью удалён из среды.
DevelStudio и ее реинкарнации
На момент 2012 года вышла последняя версия среды — 3.0.2, где появился новый набор компонентов, в том числе браузер Chromium вместо IE, что привлекло внимание веб-разработчиков и пользователей среды Алгоритм. На тот момент компиляция программ в Алгоритме была платной, поэтому DevelStudio как новая и бесплатная среда разработки переманила на себя бо́льшую часть аудитории.
В 2014 году начались первые попытки по восстановлению среды, в этот раз со стороны сообщества. В конце 2018 года исходный код был восстановлен и доступен в GitHub.
В 2019 году сообщество обратилось к создателю DevelStudio с целью изменения политики распространения среды, вследствие чего она стала доступной для обновления и редактирования. Из-за жалоб на отсутствие ссылок на использованные библиотеки (DCEF, PHP4Delphi, TSizeCtrl, SynEdit) форум был удалён, а одна из страниц с описанием среды была перенаправлена на главную страницу сайта. С этого момента DevelStudio официально принадлежит сообществу.
Реинкарнация DevelStudio
Параллельно с этим главный разработчик DevelStudio начал создавать реинкарнацию предыдущей среды. Он взял за основу графическую библиотеку JavaFX, в результате вышла полностью новая среда, с поддержкой CSS, но без полной поддержки библиотеки Zend PHP — проект был основан на собственном языке jPHP. Его особенностью является, работа на JVM, JIT-компилятор, поддержка юникода, многопоточность и объектно-ориентированная стандартная библиотека.
Развитие
В 16-й версии среда DevelNext получила поддержку php 7, а параллельно с этим jPHP был расширен энтузиастом для разработки под ОС Android.
На данный момент автор и энтузиасты трудятся над 2020 версией (ранее 17-я).
PHPQt и компилятор PQEngine
В 2015 году Александр Казанцев начал изучать алгоритмы разработки интерфейсов и создал расширение php_qml, что давало возможность использовать виджеты из библиотеки QT, но работало оно только под Windows.
С этого началась разработка PHPQt, первые версии не обратили особого внимания со стороны веб-разработчиков, поэтому автор начал углублённо улучшать расширение.
28 июля 2015 года был опубликован первый вариант компилятора проектов, на тот момент это был простой исполнитель скриптов(сценариев), который прикреплял php-код к стабу (подобно DevelStudio), и имел зависимость от Windows API, на этой стадии поддерживались уже почти все виджеты и многопоточность, была лёгкая оптимизация php-кода. С этого момента движок стали называть PQEngine.
3 августа 2016 года вышла пятая версия компилятора приложений (PqBuilder), что перешёл на базу PlastiQ и имел поддержку уже новейшего, на тот момент, php 7, проекты получили более полноценный компилятор и уже не требовали наличия PqEngine.dll вблизи с исполняемым файлом, вместо этого визуальные библиотеки стали добавляться динамично — как файлы, а не вшиваться в PQEngine.dll. Такой шаг был предпринят для совместимости с другими системами и оригинальными библиотеками Qt.
История PHP: от начала до настоящего времени
С появлением шестой версии проект стал дополнением для среды Qt Creator, а компилятор стал всего-навсего оптимизатором кода перед конечной сборкой программы. Появился полноценный редактор интерфейса, подсказки в редакторе кода и начала создаваться документация. С этого момента сделали анонс про создание среды PqStudio, но её разработка не зашла далеко.
8 июня 1995 года вышел Personal Home Page (PHP Tools) version 1.0 — первый публичный релиз с открытым исходным кодом. Эта новая реализация была способна взаимодействовать с базами данных и многое другое, что создавало фреймворк, с помощью которого пользователи могли создавать простые динамические веб-приложения.
Развитие PHP 3.0
Одной из сильнейших сторон PHP 3.0 была возможность расширения ядра дополнительными модулями. Впоследствии интерфейс написания расширений привлёк к PHP множество сторонних разработчиков, работающих над своими модулями, что дало PHP возможность работать с огромным количеством баз данных, протоколов, поддерживать большое число API. Большое количество разработчиков привело к быстрому развитию языка и стремительному росту его популярности. С этой версии акроним php расшифровывается как PHP: hypertext Preprocessor, вместо устаревшего Personal Home Page.
Zend Engine и PHP 4.0
К зиме 1998 года, практически сразу после официального выхода PHP 3.0, Энди Гутманс и Зеев Сураски начали переработку ядра PHP. В задачи входило увеличение производительности сложных приложений и улучшение модульности базиса кода PHP. Новый движок, названный Zend Engine, успешно справлялся с поставленными задачами и впервые был представлен в середине 1999 года.
PHP 4.0, основанный на движке Zend Engine и принёсший с собой набор дополнительных функций, официально вышел в мае 2000 года. В дополнение к улучшению производительности, PHP 4.0 имел ещё несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций.
PHP 5 и последующие версии
PHP 5 вышел 13 июля 2004 года. Изменения включают обновление ядра Zend (Zend Engine 2), что существенно увеличило эффективность интерпретатора. Введена поддержка языка разметки XML. Полностью переработаны функции ООП, которые стали во многом схожи с моделью, используемой в Java. В частности, введён деструктор, открытые, закрытые и защищённые члены и методы, окончательные члены и методы, интерфейсы и клонирование объектов. В последующих версиях также были введены пространства имён, замыкания и целый ряд достаточно серьёзных изменений, количественно и качественно сравнимых с теми, которые появились при переходе на PHP 5.0.
Синтаксис PHP подобен синтаксису языка Си. Некоторые элементы, такие как ассоциативные массивы и цикл foreach, заимствованы из Perl.
Для написания простейшего скрипта не требуется описывать какие-либо переменные, используемые модули и т. п. Любой скрипт может начинаться непосредственно с оператора . Закрывающий оператор не обязателен и его рекомендуется опускать, чтобы избежать проблем с отправкой лишних символов в поток вывода после выполнения основного кода.
Простейшая программа Hello world на PHP выглядит следующим образом:
Также возможен более короткий вариант вывода строки:
Открывающий тег вида <?= используется для сокращённой записи конструкций, используемых для вывода строки.
PHP исполняет код, находящийся внутри ограничителей, таких как . Всё, что находится вне ограничителей, выводится без изменений. В основном это используется для вставки PHP-кода в HTML-документ, например, так:
До версии 7.0 допускалось использование ограничителей языка программирования ASP и . Работа сокращённых конструкций определяется в конфигурационном файле php.ini.
Имена переменных начинаются с символа $, тип переменной объявлять не нужно. Имена переменных и констант чувствительны к регистру символов. Имена классов, методов классов и функций к регистру символов не чувствительны. Переменные обрабатываются в строках, заключённых в двойные кавычки, и heredoc-строках (строках, созданных при помощи оператора <<<). Переменные в строках, заключённых в одинарные кавычки и nowdoc не обрабатываются.
Инструкции разделяются с помощью точки с запятой (;), за исключением некоторых случаев, после объявления конструкции if/else и циклов.
Переменные в функцию можно передавать как по значению, так и по ссылке (используется знак &).
PHP поддерживает три типа комментариев: в стиле языка Си (ограниченные /* */), C++ (начинающиеся с // и идущие до конца строки) и оболочки UNIX (с # до конца строки).
PHP является языком программирования с динамической типизацией, не требующим указания типа при объявлении переменных, равно как и самого объявления переменных.
К скалярным типам данных относятся:
К нескалярным типам относятся:
Диапазон целых чисел (int) в PHP зависит от платформы (для 32-битной архитектуры диапазон числа не превышает 32 бита, то есть, от −2 147 483 648 до 2 147 483 647). Числа можно задавать в десятичной, двоичной, восьмеричной и шестнадцатеричной системах счисления. Диапазон вещественных чисел (float) также зависит от платформы (для 32-битной архитектуры диапазон позволяет оперировать числами от ±1.7×10−308 до ±1.7×10+308).
PHP предоставляет разработчикам логический тип (bool), способный принимать только два значения true («истина») и false («ложь»). При преобразовании в логический тип число 0, пустая строка, ноль в строке «0», null и пустой массив считаются равными false. Все остальные значения автоматически преобразуются в true.
Специальный тип null предназначен для переменных без определённого значения. Единственным значением данного типа является литерал null. Тип null принимают неинициализированные переменные, переменные инициализированные константой null, а также переменные, удалённые при помощи конструкции unset().
Ссылки на внешние ресурсы имеют тип «ресурс» (resource). Переменные данного типа, как правило, представляют собой дескриптор, позволяющий управлять внешними объектами, такими как файлы, динамические изображения, результирующие таблицы базы данных и т. п. По мере развития языка стандартная библиотека постепенно дорабатывается и ресурсы заменяются объектами. Таким образом планируется полностью избавиться от этого типа.
Массивы (array) поддерживают числовые и строковые ключи и являются гетерогенными. Массивы могут содержать значения любых типов, включая другие массивы. Порядок элементов и их ключей сохраняется. Не совсем корректно называть php-массивы массивами, на самом деле это, скорее всего, упорядоченный хеш. Возможно неожиданное поведение при использовании цикла for со счётчиком вместо foreach. Так, например, при сортировке массива с численными индексами функциями из стандартной библиотеки, сортируются и ключи тоже.
Язык допускает типизацию аргументов, возвращаемых значений функций и методов классов, а также, начиная с версии 7.4 типизацию полей классов. Включение строгого режима отключает неявные преобразования типов в данных участках кода, что приближает поведение языка к языкам со строгой типизацией.
Типы int, string, float, bool, array, object и некоторые другие являются допустимыми определениями типа аргумента, поля класса или возвращаемого значения. Также допускается использовать имена классов, либо интерфейсов для определения конкретной реализации. Использованиеresource для определения типа не допускается.
Современный PHP реализует базовую поддержку алгебраических типов данных и позволяет использовать как конъюнкцию, так и дизъюнкцию при определении типа. Язык не позволяет использовать псевдонимы типов, однако предоставляет несколько встроенных реализаций, которые в рамках PHP именуются «псевдотипами». Подобный термин в языке применяется к любому определению типа, который не является самостоятельным, применимым к значению, а реализован лишь как инструкция проверки типа в Zend VM (иногда применяется устоявшийся англицизм «тайп-хинт»).
// Для функции определён «псевдотип» mixed // Однако фактический тип у переменной $result — это int
К «псевдотипам» относятся:
Помимо проверок на соответствие типам встроенные «псевдотипы» могут реализовывать дополнительную логику проверок. Например, callable должен соответствовать (одному из):
PHP поддерживает как объявление именованных функций, так и анонимных функций первого класса, например:
// Объявление именованной функции // Объявление анонимной функции // Короткий синтаксис
Стоит обратить внимание, что в случае анонимных функций различие состоит не только в визуальных отличиях, но и в способе захвата переменных внешнего контекста. Любая «короткая» форма записи является замыканием, в то же время длинная запись для реализации замыкания требует явного указания переменных внутри оператора use из внешнего контекста для их захвата:
// Использование оператора use // Альтернативный вариант, используя короткий синтаксис
‘I am a’ // Запись значения в переменную $a // Вывод переменной $а // Вывод переменной $а (дополнительный $ перед переменной $b) // Вывод переменной $a // Вызов функции function_name //Вызов функции function_name // Создание объекта класса ClassName // Создание объекта класса ClassName // Обращение к свойству b объекта // Вызов метода c() объекта // Обращение к свойству "a" объекта, так как $b = ‘a’ // Вызов метода function_name() объекта, так как $c = ‘function_name’
// Напечатает: 123 // Так как тело коротких анонимных функций допускает только выражения.
Суперглобальными массивами (англ. ) в PHP называются предопределённые массивы, имеющие глобальную область видимости без использования директивы global. Большая часть этих массивов содержит входные данные запроса пользователя (параметры GET-запроса, поля форм при посылке методом POST, куки и т. п.).
$_SERVER (аналог для устаревшего — $HTTP_SERVER_VARS)
$_ENV (уст. $HTTP_ENV_VARS)
$_GET (уст. $HTTP_GET_VARS)
$_POST (уст. $HTTP_POST_VARS)
$_FILES (уст. $HTTP_POST_FILES)
Ассоциативный массив со сведениями об отправленных методом POST файлах. Каждый элемент имеет индекс, идентичный значению атрибута «name» в форме, и, в свою очередь, также является массивом со следующими элементами:
$_COOKIE (уст. $HTTP_COOKIE_VARS)
$_SESSION (уст. $HTTP_SESSION_VARS)
Содержит данные сессии.
Ключевое слово class было зарезервировано ещё в третьей версии языка. В четвёртой версии стало возможно создавать классы и объекты на их основе. Однако принципы ООП поддерживались лишь частично, так например, все члены (переменные и методы) были открыты. К тому же создание объектов было дорогой операцией и работало медленно.
Начиная с пятой версии PHP обладает полной поддержкой ООП. Работа с классами была оптимизирована и теперь такой код работает достаточно быстро.
Класс в PHP объявляется с помощью ключевого слова class. Методы и свойства класса могут быть общедоступными (public, по умолчанию), защищёнными (protected) и скрытыми (private). PHP поддерживает все три основных механизма ООП — инкапсуляцию, полиморфизм подтипов и наследование (родительский класс указывается с помощью ключевого слова extends после имени класса). Поддерживаются интерфейсы (ставятся в соответствие с помощью implements). Разрешается объявление финальных, абстрактных методов и классов. Множественное наследование классов не поддерживается, однако класс может реализовывать несколько интерфейсов. Для обращения к методам родительского класса используется ключевое слово parent.
Начиная с версии 5.4.0 множественное наследование может быть реализовано с помощью механизма особенностей (англ. ). Особенности похожи на примеси (англ. ), за исключением того что для них нельзя напрямую создать экземпляр. Повторное использование кода заключено в использовании кода особенности в нескольких классах. Допускается использовать в одном классе несколько особенностей. Механизм особенностей имеет средства разрешения конфликтов имён. При запуске программы код особенности будет «вкомпилирован» в код содержащего его класса.
Классы в PHP имеют ряд «магических» методов (англ. ), начинающихся с двух символов подчёркивания — конструктор (__construct(), в версиях до 5.0 конструктором служил метод, одноимённый с классом) и деструктор (__destruct()), а также методы чтения (__get()) и записи (__set()), свёртывания (__sleep()) и развёртывания (__wakeup()), клонирования (__clone()) и др. Эти методы являются достаточно гибким инструментом: переопределяя их, можно добиться существенного изменения поведения объекта.
Все функции-члены реализованы виртуальными и потому все они являются методами.
Начиная с пятой версии PHP объекты передаются по указателю:
Иногда также можно встретить упоминание, что объекты передаются по ссылке, однако это не так. Так как в PHP отсутствует понятие «указателя», то может применяться терминология «передачи по ссылке» в контексте передачи объектов в качестве аргументов функций или методов из-за схожести поведения. Отличия между передачей объектов по ссылке и по указателю выглядят следующим образом:
// Передача по указателю // Передача по ссылке
// Использование :: вне объявления класса
PHP-скрипты обычно обрабатываются интерпретатором в порядке, обеспечивающем кроссплатформенность разработанного приложения:
Раньше, для увеличения быстродействия приложений было возможно использование специального программного обеспечения, так называемых акселераторов. Принцип их работы заключается в кэшировании однажды сгенерированного байт-кода в памяти и/или на диске, таким образом, из процесса работы приложения исключаются этапы 1—3, что в общем случае ведёт к значительному ускорению работы. Начиная с версии 5.5 одна из разновидностей акселераторов, opcache, была встроена в ядро, поэтому сторонние решения больше не пользуются популярностью.
Интерпретатор состоит из ядра и подключаемых модулей, «расширений», представляющих собой динамические библиотеки. Расширения позволяют дополнить базовые возможности языка, предоставляя возможности для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF и тому подобным. Любой желающий может разработать своё собственное расширение и подключить его. Существует огромное количество расширений, как стандартных, так и созданных сторонними компаниями и энтузиастами, однако в стандартную поставку входит лишь несколько десятков хорошо зарекомендовавших себя. Множество расширений доступно в репозитории PECL.
Начиная с версии 7.4.0 в PHP была добавлена поддержка интерфейса внешних функций (FFI), что в значительной степени упростило взаимодействие с библиотеками, написанными на любом другом языке (включая API, предоставляемое операционной системой). Этот новый функционал, в свою очередь, предоставил альтернативу написанию расширений. Таким образом, используя FFI можно писать код на языке PHP и взаимодействовать с любыми библиотеками в системе, которые предоставляют cdecl, fastcall или stdcall ABI.
SAPI — это внешний уровень абстракции, предназначенный для встраивания интерпретатора в другие приложения и отвечает за его работу (запуск, остановка, передача скриптов на исполнение, доступ к внешним данным). Существует несколько основных SAPI, определяющих способы запуска и использования PHP:
Начиная с версии PHP 5.4.0 в CLI SAPI появилась возможность запуска PHP как отдельного HTTP-сервера. Однако этот режим предназначен исключительно для разработки, так как запускает только один процесс интерпретатора и выполняет все запросы исключительно последовательно.
PHP имеет несколько пасхальных яиц (шуток). Передача специальных GET-параметров любому php-скрипту приводит к выводу различных изображений.
при вводе этого значения в адресную строку браузера можно увидеть различные изображения, в зависимости от версии интерпретатора:
Эти значения можно получить и непосредственно в PHP-скрипте с помощью функций php_logo_guid и zend_logo_guid для логотипа Zend.
В таблице представлен список существующих на сегодняшний момент альтернативных реализаций.
Название Версия PHP (примерно) Лицензия Результат компиляции
KPHP 7.4 GPL C++, машинный код
HipHop 5.4 PHP License C++, машинный код
Roadsend PHP 5.3 GPL/LGPL C, машинный код
Quercus (в составе веб-сервера Resin) 5.2 GPL или коммерческая JVM
PHC 5.2 BSDL C, машинный код
PH7 5.5 Своя (Symisc Public License) C, машинный код
Язык PHP является самым популярным языком для разработки систем управления содержимым (Content management system, CMS).
PHP Development Tools Eclipse Public License
Aptana Studio GNU GPL
Sublime Text Proprietary software
VS.Php for Visual Studio Proprietary software
PHP Tools for Visual Studio Trial
Сторонники языка PHP в качестве основных его преимуществ называют широкую распространённость, востребованность PHP-разработчиков на рынке труда и простоту изучения. К достоинствам языка относится и его достаточно быстрая эволюция.
Поддержка строк с многобайтовыми кодировками (такими как UTF-8) реализуется через отдельные расширения mbstring и iconv, на уровне ядра поддержка отсутствует, однако с версии PHP 4.2.0 есть возможность переопределять стандартные функции работы со строками, подменяя их на аналоги из mbstring. Поддержка многобайтовых кодировок во всех строковых функциях стала доступна с версии 5.4.0 (март 2012 года).
Хотя есть возможность установить расширение pthreads для «честных» потоков, но для этого интерпретатор должен быть скомпилирован с флагом thread safety, а само расширение признано устаревшим в пользу parallel (от того же автора).
В качестве более современной альтернативы возможно использование расширения Swoole.
Разработчик Команда разработчиков Yii
Первый выпуск 1 января 2008
Twig 2.4.0.
Gii 2.2.0.
Релиз Yii 3 планируется в 2020 году. Среди новых расширений:
Фреймворк отлично документирован: документация есть ко всему и на нескольких языках (русский, украинский, английский, испанский и другие). Также каждый метод имеет шапку в PHPDoc.
Проект Yii включает в себя хранилище пользовательских расширений.
Была также официальная библиотека расширения, zii, которая в конечном итоге была объединена с основной структурой; она была включена в каждую версию с версии Yii версии 1.1.0 и включает в себя дополнительные поведения и виджеты, такие как сетки и пользовательский интерфейс jQuery.
В Yii имеется сборник официальной документации, такой как учебное пособие по разработке простого приложения для блога, руководство, в котором дается описание каждой функции и ссылки на класс, которая дает каждую деталь о свойствах, методах и событиях. Также есть документация, предоставленная пользователями, большая часть которой доступна в вики на официальном веб-сайте.
Yii выпущен под новой лицензией BSD (лицензия 3-оговорки). Это означает, что можно использовать его бесплатно для разработки как открытых, так и проприетарных веб-приложений. Текст, содержащийся в Официальной документации Yii, лицензируется для общественности в соответствии с лицензией GNU Free Documentation License (GFDL). В общем, содержание документации Yii можно копировать, модифицировать и перераспределять до тех пор, пока новая версия предоставляет одни и те же свободы другим и признает авторов используемой документации Yii. Логотип лицензирован в соответствии с лицензией Creative Commons Attribution-No Derivative Works 3.0 Unported License
Производительность фреймворков в этих тестах оценивалась на искусственных примерах типа Hello world. Тесты показывают время инициализации фреймворков, и на основании их можно лишь сделать вывод, что Yii имеет качественную подсистему отложенной инициализации (то есть, код загружается только тогда, когда он необходим). Подтвержденной информации о том, что Yii в реальных условиях работает быстрее, чем другие фреймворки, нет.
В блогосфере можно найти массу статей со сравнительным анализом фреймворков. В целом, прослеживаются следующие тенденции:
Yii достаточно популярен среди разработчиков, на его основе существуют множество различных систем управления сайтами
Красный Старая версия, не поддерживается
Жёлтый Старая версия, пока поддерживается
Ветка Версия Дата выпуска Окончание поддержки Системные требования
1.0 1.0 3 декабря 2008 31 декабря 2010 PHP 5.1.0 или выше
1.0.1 4 января 2009
1.0.2 1 февраля 2009
1.0.3 1 марта 2009
1.0.4 5 апреля 2009
1.0.5 10 мая 2009
1.0.6 7 июня 2009
1.0.7 5 июля 2009
1.0.8 9 августа 2009
1.0.9 6 сентября 2009
1.0.10 18 октября 2009
1.0.11 13 декабря 2009
1.0.12 14 марта 2010
1.1 1.1.0 10 января 2010 31 декабря 2015 до 1 декабря 2019 PHP 5.1.0 или выше
1.1.1 14 марта 2010
1.1.2 2 мая 2010
1.1.3 4 июля 2010
1.1.4 5 сентября 2010
1.1.5 14 ноября 2010
1.1.6 16 января 2011
1.1.7 26 марта 2011
1.1.8 26 июня 2011
1.1.9 1 января 2012
2.0.1 7 декабря 2014
2.0.2 11 января 2015
2.0.3 1 марта 2015
2.0.4 10 мая 2015
2.0.5 11 июля 2015
2.0.6 10 августа 2015
2.0.7 14 февраля 2016
2.0.8 28 апреля 2016
2.0.13 3 ноября 2017
2.0.16 31 января 2019