PHP – скриптовый язык программирования, который достаточно активно применяется для разработки веб-приложений. Лидирует в сфере создания динамических сайтов. Поддерживается практически всеми хостинг-провайдерами. Был разработан командой энтузиастов, распространяется под собственной лицензией, которая не совместима с GNU GPL.
Проще говоря, язык программирования PHP разработан специально для создания web-сценариев для последующего их исполнения на Web-сервере.
Название PHP первоначально произошло от английского Personal Home Page Tools, позже было переименовано в Hypertext Preprocessor, то есть «препроцессор гипертекста».
Одним из наиболее значительных преимуществ PHP перед таким языками, как например, С и Perl, является возможность создавать HTML-документы с внедренными командами PHP. Еще одно важное преимущество PHP – это то, что скрипты выполняются на стороне сервера. Таким образом, возможно обработать HTML-файлы процессором PHP так, что клиенты не смогут распознать, получили ли они HTML-файл либо выполненный скрипт.
PHP приобрел свою популярность, в основном, благодаря двум факторам: во-первых, он крайне прост для изучения (за несколько часов можно усвоить азы написания простых PHP-скриптов), а во-вторых, при своей простоте он позволяет создавать достаточно качественные приложения, пригодные для длительного использования.
Язык PHP совершенствуется в соответствии с возрастающими запросами.
История создания и развития
Первая версия PHP была разработана в 1994 году для личного использования: программист Расмус Лердорф (Дания) разместил в сети свое резюме и для того, чтобы всегда быть в курсе, кто и когда его просматривал, создал набор скриптов на Perl. Свою придумку Лердор и назвал PHP – Personal Home Page, то есть «Личная Домашняя Страница».
Вскоре, правда, скорости Perl перестало хватать, и датчанин придумал новый интерпретатор шаблонов с неоригинальным названием PHP/FI, где FI – это Forms Interpreter, то есть «интерпретатор форм». Написан он был на сей раз на C.
С 1997 года обработчик начал распространяться. Второй его версией (PHP/FI 2.0, также написанной на С) уже использовалось 50 тысяч доменов. Правда, в мировых масштабах эта цифра составила всего 1% от существующих в мире.
А в 1998 году PHP вышел практически в такой форме, которая известна сегодня – PHP 3.0. Перед запуском интерпретатора его код был полностью переписан израильскими программистами Зеев Сураски и Энди Гутмансом. Главной особенностью третьей версии стала возможность расширения ядра дополнительными модулями. Эта функция в будущем привлекла множество разработчиков модулей, что открыло перед PHP возможность использовать множество баз данных, протоколов и поддерживать многие API.
Благодаря тому, что к работе над PHP быстро подключилось немало разработчиков, язык стал стремительно развиваться и набирать популярность. Кстати, именно с третьей версии PHP перестало расшифровываться как «Личная Домашняя Страничка», и было презентовано в качестве акронима «PHP: hypertext Preprocessor».
В 1999 году Гутманс и Сураски разработали новый движок, Zend Engine, который обеспечивал более высокую производительность при разработке сложных приложений. Собственно PHP 4.0, базирующийся на данном движке, был представлен только в мае 2000 года. Кроме абсолютно нового движка, были внедрены и другие новшества (такие как, например, поддержка сессии, более-менее безопасные методы для обработки информации, которую вводит пользователь, новые языковые конструкции и т. д.).
В 2004 году ядро было снова обновлено – 13 июля вышла пятая версия PHP 5.0. Благодаря движку Zend Engine 2 производительность была увеличена. Кроме того, существенно расширились возможности интерпретатора. Например, он стал поддерживать язык разметки XML. Также разработчики добавили закрытые, защищенные и открытые члены и методы, окончательные члены и методы, деструктор, возможность клонирования объектов и интерфейсы.
Работа над шестой версией PHP была начата в октябре 2006 года и предусматривала множество изменений. Среди прочего предлагалось ввести поддержку Юникода. Тем не менее, с реализацией данной идеи возникли проблемы, поэтому разработки в данном направлении были признаны неэффективными.
Следующей рабочей версией PHP стала версия 5.4.
Набор средств для работы
Кроме выше названных преимуществ, язык PHP отличает еще и достаточно большое количество встроенных средств для разработки приложений.
Наиболее используемые средства PHP:
- возможность взаимодействия с огромным количеством систем управления базами данных (такими как Oracle, Microsoft SOL, ODBC, FrontBase, DB++, MySQL и мн. др.);
- автоматизация процессов извлечения GET-параметров, POST-параметров и переменных окружения в предопределенный массив;
- автоматическое отправление HTTP-заголовков;
- возможность работы с удаленными файлам, сокетами, локальными файлами;
- работа с HTTP-авторизацией;
- возможность работ с cookies;
- возможность обработки загружающихся на сервер файлов;
- работа с XForms.
Благодаря этим и многим другим возможностям, язык PHP занимает шестое место по популярности среди языков программирования (согласно данным корпорации TIOBE на декабрь 2012 года). PHP используют такие крупные сайты как Facebook и Википедия.
GUI-приложения
Несмотря на то, что PHP нечасто используется для создания GUI-приложений, он вполне эффективен в данном качестве. Существуют пакеты PHP-GTK и PHP-Ot, которые служат для создания кроссплатформенных приложений. По сути, данные пакеты – это обертки для библиотек виджетов.
Существует и пакет PHP для NET/Mono – Phalanger, с помощью которого, в компиляции с PHP-кодом, может быть создано практически любое серверное либо настольное приложение .NET.
Возможно создание и графических приложений в Windows – для этого служит пакет WinBinder, а также интегрированная среда Devel Studio.
Синтаксис PHP
Язык PHP по синтаксису похож на С, но при этом существуют и заимствования из языка Perlр – например, цикл foreach.
Для сокращения при записи конструкции используется тег <?=. Исполняется же код, который находится внутри ограничителей – <?php ?>. Собственно, с него и может начинаться любая программа. Все данные, которые располагаются вне ограничителей, будут выводиться без изменений. В ранних версиях допускалось использование и некоторых ограничителей ASP – таких как <% %>.
Имена переменных, вне зависимости от их типа, необходимо предварять символом $. Причем, следует помнить, что имена переменных (собственно, как и имена классов, функций, а также константы) необходимо указывать с учетом регистра.
В PHP переход на новую строку рассматривается как пробел.
PHP поддерживает комментарии трех типов:
- В стиле языка С с ограничителями /* */
- Комментарии в С++, в начале обозначенные // и продолжающиеся до конца строки
- В стиле оболочки UNIX, начинающиеся с # и идущие до конца строки
Типы данных
Язык программирования PHP не требует указания типа переменных, поэтому скалярные типы преобразуются неявно. Однако, в PHP вполне возможно производить и явное преобразование.
Скалярные типы данных:
- integer – целый тип
- double, float – вещественный тип
- boolean – логический тип
- string – строковый тип
- NULL – специальный скалярный тип
Диапазон Integer в PHP обычно составляет от −2 147 483 648 до 2 147 483 647, однако зависит также и от платформы. Могут использоваться числа десятичной, восьмеричной или шестнадцатеричной системах измерения. Double позволяет оперировать вещественными числами в диапазоне от ±1.7×10−308 до ±1.7×10+308
Данные логического типа могут иметь только одно из двух значений – TRUE либо FALSE («истина» либо «ложь»). Тип данных NULL обозначает данные без конкретного значения.
Нескалярные типы данных:
- resource – ресурс
- array – массив
- object – объект
Тип данных «ресурс» – это ссылка на внешний ресурс. Как правило, это дескриптор, который позволяет управлять внешними файлами, изображениями, таблицами и базами данных. В массивах могут содержаться данные любых типов, в том числе и другие массивы.
Существуют также и псевдотипы:
- Mixed – необязательные параметры, один или несколько
- Number – число (integer или float)
- Callback или string – анонимная функция
- Void – отсутствие параметров
Особенности работы интерпретатора
PHP-скрипты обрабатываются интерпретатором в таком порядке, который обеспечивает кроссплатформенность готового приложения.
Порядок обработки скриптов:
- лексический анализ исходного кода, генерация лексем
- синтаксический анализ лексем
- генерация байт-кода
- выполнение байт-кода
С целью ускорить скорость работы приложений возможно использовать специальное ПО – акселераторы. Они кэшируют единожды сгенерированный байт-код в памяти либо на диске (или и там, и там), благодаря чему выполнение первого, второго и третьего этапов становится ненужным.
Расширения
Интерпретатор состоит из ядра и расширений – подключаемых модулей, которые представляют собой динамические библиотеки. Они предоставляют возможности для работы с базами данных, графикой, криптографическими библиотеками, документами в формате PDF и т.д. Подключить собственное расширение может любой желающий. В стандартную же поставку входит пару десятков уже показавших себя в эффективной работе расширений.
Режимы работы
Интерпретатор PHP может использоваться несколькими способами.
- Как модуль к веб-серверу – наиболее распространенный метод с наиболее простой конфигурацией.
- Как CGI – при вызове скрипта веб-сервер вызывает /usr/bin/php-cgi /path/to/script.php, и создается новый процесс. Более современные варианты – FastCGI и SCGI – позволяют не производить постоянный вызов, а перезапускать интерпретатор PHP только в том случае, если текущие FastCGI-процессы находятся в работе и после освобождения будут загружены новыми задачами снова. Процессы, превысившие время жизни, время простоя или отработавшие заданное количество запросов, завершаются принудительно.
- В качестве исполняемого файла – скрипта командной строки. Он вызывается пользователем и выполняется в окружении вызвавшего его пользователя. В таком случае PHP используется дл решения административных задач в ОС Linux, UNIX, Mac OS X, Microsoft Windows и AmigaOS.
Пасхалки в PHP
В PHP заложено несколько шуток – так называемых «пасхальных яиц». Они выводят различные изображения (зависит от версии), если любому PHP-скрипту будут переданы специальные GET-параметры.
Например, введя в адресную строку браузера значение:
любой_сценарий.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
можно увидеть фотографию таксы, кролика, черного терьера либо игрушечного синего слона, а также изображение искаженного лого PHP.
Кроме того, существует значение, которое позволяет просмотреть список всех авторов PHP:
любой_сценарий.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
Познавательно; работает только в версии 4.5.