PHP - Что такое РНР. Какой язык программирования может заменить PHP? Php описание языка программирования

Язык программирования PHP

РНР изобретен Расмусом Лердорфом в конце 1994 года. Первая версия выпущена в 1995 году под именем «Инструментарий Персональных Домашних Страниц», затем она была переработана и названа PHP/FI Version 2 (FI -- модуль обработки данных для форм). Также была добавлена поддержка баз данных mSQL. С этого момента в разработке стали принимать участие добровольцы.

Статистика используемости РНР приблизительна, но, согласно исследованию, проведенному Netcraft, в начале 2001 года РНР использовался на более чем 5 300 000 сайтах по всему миру. Для сравнения: в это время число IIS серверов было примерно таким же (5 млн). Разработка интерпретатора РНР приняла форму организованного командного процесса, ядро интерпретатора разрабатывает компания Zend.com. При этом РНР распространяется свободно: его последнюю версию можно загрузить с сайта PHP.net. Модули РНР поставляются в комплекте с сервером Apache, в комплектах систем Linux.

Изначально аббревиатура РНР означала Preprocessor of Home Pages -- препроцессор домашних страниц. Это язык внедряемых в HTML-страницы сценариев, исполняемых на сервере. По большей части его синтаксис заимствован из таких языков, как С, Perl, Java, и при этом добавлена масса возможностей, которых этим языкам недостает. Проще говоря, синтаксис РНР -- это разумная альтернатива и строгости С, и «беспредельности» Perl.

РНР наделен практически полным набором функциональности, о которой (до появления РНР) мог только мечтать web-программист. Его цель -- позволить максимально быстро создавать динамически генерируемые web-страницы. С полным основанием можно заявить, что изучение и использование РНР будет выгодно как начинающим, так и профессиональным программистам.

Сравнение языка программирования РНР с другими языками программирования Web-приложений

Для ответа обоснования выбора средств программирования было произведено сравнение РНР с другими языками программирования Web-приложений. Основными конкурентами РНР являются технологии JSP (Java Server Pages и Java Scriptlets), ASP.NET (Active Server Pages), Perl, Cold Fusion Server Pages.

1. Языки программирования РНР и Perl

Язык Perl был создан программистом Ларри Уоллом (Larry Wall) и расшифровывается как Practical Extraction and Report Language. Перевести это можно как "язык для практического извлечения данных и составления отчетов". Perl является интерпретатором и появился намного раньше, чем Web. С появлением интернета язык Perl оказался удобным инструментом для создания динамических Web-страниц. Большое распространение Perl получил потому, что был доступен на каждом Web-сервере, поскольку практически все они работали под управлением UNIX, и альтернативой ему являлся лишь более сложный язык С. Perl проигрывает РНР в изяществе, притом, что РНР предлагает функциональность, аналогичную Perl при значительно меньшей избыточности и сравнительной простоте синтаксиса. Избыточность языка Perl связана с тем, что он разрабатывался для самых разнообразных приложений, что не могло не сказаться на его синтаксисе, в то время как РНР изначально разрабатывался для Интернета. По мнению очень многих пользователей, не знавших изначально ни РНР, ни Perl, выучить РНР намного проще.

2. Языки программирования РНР и Java

Вообще говоря, различают язык Java и технологию Java. Язык Java представляет собой С-подобный язык, который разрабатывался как "улучшенный C++". Технология Java включает в себя клиентскую и серверную часть, а также доступ к базам данных, поэтому наиболее корректно проводить сравнение технологии Java со связкой Apache/PHP/MySQL. Технология Java разрабатывалась как межплатформенная технология, позволяющая создавать Web-приложения корпоративного масштаба. Основными достоинствами этой технологии являются межплатформенная переносимость и объектно-ориентированный язык, что позволяет создавать сложные и объемные приложения. К числу недостатков можно отнести медленное выполнение, потребление большого количества памяти (плата за межплатформенную переносимость) и сложность разработки Web-приложений по сравнению с РНР. Между тем РНР почти не уступает Java в гибкости и масштабируемости созданных приложений. Кроме того, использование Java для разработки достаточно простых приложений вряд ли оправдано, а при работе над серьезными задачами Java обходится дороже.

3. Языки программирования РНР и ASP.NET

ASP (Active Server Pages) -- язык сценариев от Microsoft. Если язык ASP значительно уступал РНР по многим параметрам, в первую очередь, по времени выполнения сценариев, то с появлением технологии ASP.NET ситуация изменилась. Основное достоинство ASP.NET заключается в возможности применения всей мощи интерфейса Windows для разработки Web-приложений. Это позволяет разрабатывать страницы со сложным интерфейсом, не заботясь о сохранении, шифровании и передаче переменных, используемых на динамических страницах. ASP.NET тесно интегрирован в новую технологию NET компании Microsoft. Главной особенностью разработки Web-приложений при помощи ASP.NET является возможность использовать любой язык программирования среды исполнения NET. Это может быть как модифицированный вариант Visual Basic -- Visual Basic.NET, так и новый язык С# или клон Java -- J#. Более того, в рамках одного Web-приложения могут быть использованы несколько языков программирования. Все это позволяет объединять в рамках одного проекта программистов, владеющих разными языками программирования. Код Web-приложения на ASP.NET компилируется в промежуточный язык MSIL (Microsoft Intermediate Language), иногда просто называемый IL. Аппаратно-независимый код на языке IL помещается в кэш Web-сервера для повышения производительности, по аналогии с байт-кодом Java. Но в отличие от технологии Java, обеспечивающей платформенную независимость, NET обеспечивает независимость от языка разработки. Выполнение Web-приложений ASP.NET на серверах, работающих не под Windows, практически невозможно. Более того, если Web-приложение интенсивно использует компоненты NET, просмотр динамической страницы будет возможен только под Windows и только с помощью браузера Internet Explorer. Поэтому в смысле переносимости РНР, безусловно, отличается от ASP.NET в лучшую сторону. Другой крайне немаловажный довод в пользу РНР заключается в быстром исправлении обнаруженных ошибок. Теоретически исправить их можно самостоятельно, если обладаете достаточной квалификацией. Также можно написать письмо разработчикам, и с большой долей вероятности, в следующей версии ошибка будет исправлена. А версии РНР выходят очень часто. Еще одним плюсом РНР, особенно важным для начинающих, является то, что его легче использовать для построения Web-приложений. Таким образом, при выборе между ASP.NET и РНР следует исходить из стоящей задачи. Если в сети Интранет крупной корпорации большинство серверов и клиентских машин работают под управлением Windows, применение ASP.NET более чем оправдано. В то же время для разработки Web-сайта, размещаемого в Интернете, целесообразнее использовать РНР.

4. Языки программирования РНР и ColdFusion

Пакет ColdFusion разработан фирмой Allaire и предназначен для быстрой разработки как интерактивных, так и динамических Web-документов путем обработки информации, полученной из базы данных. Минусом ColdFusion является достаточно низкая переносимость. РНР работает практически на всех платформах, a ColdFusion -- только на четырех: Win32, Solaris, HP/UX и Linux. Кроме того, ColdFusion, так же как и ASP, является коммерческой разработкой. ColdFusion достаточно мало распространен. По сравнению с РНР он более требователен к ресурсам. Плюсом ColdFusion является хорошая интегрированная среда разработки и, как следствие, более простые, чем в РНР языковые конструкции и более быстрое написание кода. Правда, из-за такой высокоуровневости языка некоторые задачи на нем решаются сложнее.

5. Языки программирования PHP 4.0 и PHP 5.0

Основные отличия заключаются в реализации объектно-ориентированной модели. РНР 4.0 работал на движке Zend Engine 1.0. К выходу РНР 5.0 фирма Zend полностью переписала движок и выпустила в свет Zend Engine 2.0, который, по словам создателей, реализует "новую объектную модель". По сравнению с РНР 4.0, в пятой версии языка появились следующие особенности:

1. Введены закрытые (private) и открытые (protected) члены и методы класса, а также абстрактные классы и методы.

2. Введены интерфейсы, при этом класс может реализовывать произвольный список интерфейсов.

3. В РНР 5 также присутствуют расширенные возможности для клонирования объектов. Предназначенный для этого конструктор копирования позволяет не просто идентично клонировать объекты, а изменять при этом некоторые их свойства.

4. Введены постоянные члены и методы класса.

5. Одним из важнейших нововведений является наличие деструкторов.

6. Хорошей новостью является введение в РНР 5.0 статических членов класса. В РНР 4.0, если возникала необходимость в использовании статических членов, приходилось пользоваться искусственным приемом, заключающемся в комбинации глобальных переменных со статическими методами. При этом получались классы, которые действовали так же, как статические. Прием этот, мягко говоря, не очень хороший, поскольку вызывал проблемы, связанные с использованием глобальных переменных. Теперь в РНР 5.0 статические методы можно объявлять явно при помощи ключевого слова static.

7. В РНР 5.0 введен механизм обработки исключений, отсутствующий в РНР 4.0. Таким образом, в результате подобных нововведений в объектную модель РНР 5.0 стал полностью профессиональным языком программирования, что позволяет использовать его для решения задач любой степени сложности.

PHP - это HTML встроенный скриптовый язык программирования общего назначения, часто используется в разработке веб-приложений. Является одним из лидеров среди языков программирования, применяющихся для создания динамических вебсайтов. Изначально название языка расшифровывалось как «Personal Home Page» (личная web-страница), однако потом оно стало рекурсивным акронимом (сокращение, в котором используется само сокращённое название), означающим «PHP: Hupertext Preprocessor» (PHP, препроцессор гипертекста).

История появления и развития языка

Давным-давно сайты были статичны, состояли из готовых страничек , объединенных гиперссылками. Но для внесения правок в материалы или их добавления нужно было дописывать и переписывать эти страницы, что часто вело к тому, что приходилось вручную переделывать весь сайт. Затем ситуацию поправил CSS и клиентские скриптовые языки, которые позволили внести в браузер немного динамики. Появились активное меню, более сложные структуры, «всплывающие» окна и т.д. А автоматическим созданием страниц со стороны сервера занимались CGI-программы (скрипты).

  • В 1994 году датский программист Расмус Лердорф написал набор этих самых скриптов на Perl/CGI, которые могли обрабатывать шаблоны на основе HTML-документов. В дальнейшем именно эти скрипты воплотились в интерпретатор языка программирования PHP, который позволял решать разнообразные задачи веб-приложений, а главное на нём можно было написать полноценный динамический сайт, но это было позже. А в начале Лердорф сделал несколько простых сценариев для своих нужд, которые позволяли определять, кто посещает веб-страницу. Но время шло и росла численность веб-разработчиков, которые интересовались использованием серверных сценариев для создания динамического контента. И весной 1995 года Расмус обнародовал первую версию PHP, которая по своей сути была набором серверных утилит и макросов. Далее летом этого же года появилась вторая версия PHP/FI 2.0 и набор утилит превратился в язык программирования PHP, который получил широкое распространение. Основным заданием этого языка была минимизация объёма создаваемого кода, необходимого для получения результата, в результате это привело к тому, что PHP стал HTML-ориентированным языком, код PHP стал встраиваться в разметку HTML.
  • Версия PHP 3 появилась в 1997 году, благодаря израильским программистам Зеву Сураски и Энди Гатмансу, которые полностью переписали PHP и разрешили многие его проблемы, определили современный облик и стиль языка. Эту версию могли легко дописывать другие разработчики, у программистов появилась возможность писать свои собственные модули, расширяя функциональность PHP. Что позволило работать с набором баз данных и поддерживать большое количество различных API. Эта версия имела некоторые задатки объектно-ориентированного подхода, что вызвало интерес и привлекло новых пользователей языка.
  • В 2000 году появился PHP 4, к этому моменту, он был установлен задействован в 2,5 миллионах вебсайтов, сравните с 250 тыс. всего 18 месяцами ранее. Целью создания новой версии было улучшение модульности кода и увеличение производительности сложных приложений. Как результат новая версия содержала много крупных изменений, включая новый движок Zend Engine (от имён создателей, Зив и Энд) и это было наиболее революционное обновление во всей истории языка. Была введена абстракция для веб-сервера, что позволило PHP работать на серверах Apache, Microsoft IIS, Zeus, AOLServer и других. Изменился способ выполнения кода: код стал читается один раз и потом преобразовывается во внутренний формат, а далее уже выполняется. Это позволило использовать технологии кэширования (PHP-акселераторы), которые существенно увеличивали производительность.

В настоящее время актуальной является версия PHP 5 выпущенная 13 июля 2004 года . В ней было переработано ядро языки, полностью изменены принципы ООП, которые стали во многом схожи с моделью, используемой в Java. На данный момент последней стабильной версией является PHP 5.4 .

РНР обладает открытым исходным кодом и распространяется бесплатно, если у вас есть желание взглянуть на исходники языка – они публично доступен на GitHub .

Особенности PHP
  • Динамичность веб-проектов. Одна из базовых возможностей РНР это встраиваемость в HTML разметку страницы и ее модификация, что позволяет «собирать» на базе одной страницы полновесные вебсайты.
  • Открытость. РНР это доказательством существования бесплатного сыра. Версия интерпретатора всегда доступна на GitHub .
  • Универсальность. PHP кроссплатформенный язык программирования, его можно использовать на разных операционных систем.
  • Простота использования. Синтаксис РНР очень прост для понимания и использования даже для непрограммистов. При этом язык обладает большим количеством возможностей, и может быть использован как шаблонизатор.
  • Техническая поддержка. Вы можете посетить официальную веб-страницу РНР (http://php.net/), где предлагается обширный список тем для обсуждения и содержится полная документация по языку с примерами.
  • Персонализация. Открытость РНР позволяет программистам модифицировать программное окружение на уровне ядра интерпретатора, добавлять или изменять его функциональность, необходимую для решения нетривиальных задач. Кроме того РНР обеспечивает достаточный контроль над окружением, позволяя уменьшить вероятность ошибок.
  • Безопасность. Если ваш РНР скрипт разработан правильно, то его программный код будет известен только вам и не будет возможностей его модифицировать извне.
  • Нестрогая типизация. Техническая особенность языка, в PHP не требует обязательного объявления типов данных в начале программы, как другие языки программирования.
  • Множество текстовых операторов. В PHP на ряду с возможностью использования регулярные выражения для работы со строками существует великое количество различных текстовых позволяющих искать вхождения в тексте, вырезать фрагмент из текста и делать много других операций с текстовыми значениями.

На текущий момент больше 60% веб-проектов во всем мире работают на PHP. Многие программисты, которые так и не научились правильно писать на этом языке, который предоставляет слишком много свободы, жалуются на его производительность. Но крупные высоконагруженные проекты с продуманной архитектурой при этом спокойно его используют. И популярность PHP остаётся неизменной, что говорит само за себя на зло всем недоброжелателям.

Предлагаю вашему вниманию краткое руководство по языку PHP для чайников в нескольких частях. Гарантирую, написать свой первый рабочий PHP код вы сможете уже после прочтения этой серии статей (или в процессе чтения). Язык PHP один из самых простых в освоении языков программирования, это серверный (исполняется на стороне сервера) язык сценариев (интерпретируемый язык).

Используется он для создания веб-проектов. Может использоваться прямо в HTML коде. И хотя результат работы скрипта часто выводится непосредственно в браузере клиента, для работы PHP не достаточно только одного браузера. То-есть вам не получится запустить index.php файл прямо в браузере, как вы уже наверняка делали с файлом index.html. Для работы PHP сценариев и веб-страниц созданных с применением PHP потребуется веб-сервер.

Если у вас еще нет хостинг площадки для вашего сайта, тогда рекомендую поэкспериментировать с PHP сценариями на локальном сервере, предназначенном для тестирования проектов. Для организации локального сервера в операционной системе Windows (WAMP, Windows-Apache-MySQL-PHP) могут быть полезны пакеты: Денвер, XAMPP, AppServ, OpenServer и т.д. После установки этих пакетов, вы получите уже настроенный и готовый к использованию сервер, а управляться он будет через удобное меню самой программы. Также, существуют и отдельные реализации APACHE, MySQL и PHP для операционной системы Windows, но настраивать их придется уже самостоятельно через конфигурационные файлы и не будет никакого меню с галочками. Для запуска, перезапуска и остановки такого сервера можно будет использовать пакетные файлы *.bat или *.cmd (батник) с командами запуска, перезапуска или остановки служб APACHE и MySQL. Третий и самый непростой для новичка вариант — это виртуальная машина с установленной и настроенной операционной системой Linux (LAMP, Linux-Apache-MySQL-PHP). Готовые образы таких «виртуалок» часто встречаются в Интернете, так что вам могут понадобиться только знания настройки программ типа VirtualBox или VMware.

Подготовка к программированию на языке PHP для чайников
  • PHP код следует помещать в файле index.php, сам файл должен быть размещен в корневом каталоге сайта, расположенного на веб-сервере.
  • Весь код на языке PHP должен быть заключен между дескрипторами или сокращенный вариант , но веб-сервер может быть не сконфигурирован для использования сокращенного варианта такой записи, поэтому предпочтителен первый вариант.
  • Вставлен PHP код может быть в любое место HTML кода.
  • Комментирование в PHP коде осуществляется следующим образом:
  • // однострочный комментарий # еще один вариант однострочного комментария /* многострочный комментарий */
  • Для того, чтобы посмотреть ваш код, откройте веб-браузер и в адресной строке введите: http://localhost/www/MyEX/index.php
  • Вывод данных на экран с помощью языка PHP для чайников
  • Вывод данных в окно (клиентскую область веб-браузера) с помощью PHP можно выполнить посредством оператора echo. Этот оператор позволяет вывести данные различных типов: числа, символьные строки и т.д.
  • Синтаксис оператора вывода:
  • echo элемент1, элемент2, элемент3, ..., элементN
  • Строковые данные заключаются в двойные или одинарные кавычки. В двойных кавычках код интерпретируется PHP. Все, что заключено в одинарные кавычки выводится без какой бы ни было интерпретации. Пример:
  • < ?php $x="PHP"; //присвоение значения переменной echo "Привет","всем"; echo " "; echo " Пример $x кода Пример $x кода

  • Для вывода более подробной информации о переменной, которая может понадобиться при отладке программы, служит функция var_dump(). Ее синтаксис:
  • var_dump(cписок переменных);
  • В списке переменных указывается одно или несколько имен переменных. Эта функция ничего не возвращает. Пример:
  • $x=12.56; var_dump($x);
  • Менее информативной, чем var_dump(), функцией вывода сведений о переменных является:
  • print_r(список_переменных);
  • Для переменных типа «массив» эта функция выводит список вида индекс => элемент.
  • Переменные языка РНР для чайников
  • Переменные – контейнеры для хранения данных. Данные, сохраняемые в переменной, называют значением этой переменной.
  • Переменная имеет имя – последовательность букв, цифр и символа подчеркивания без пробелов и знаков препинания, начинающаяся обязательно с символа доллара ($), за которым должна следовать буква или символ подчеркивания.
  • Правильные имена переменных: $_tel, $tmp, $my_, $address_234_45.
  • Неправильные имена переменных: $234tel, my address, $tel:234.
  • РНР является регистро-ависимым языком относительно имен переменных и констант. Однако ключевые слова могут использоваться в любом регистре.
  • Типы данных языка РНР и преобразование данных для чайников Тип данных Пример Описание значений
    Строковый или символьный (string) «Привет всем»
    «123456»
    «25 рублей»
    Последовательность символов, заключенная в кавычки
    Целочисленный, числовой (integer) -234
    25
    0
    Число или последовательность цифр, перед которыми может быть указан знак числа
    Числовой с плавающей точкой (float) 5.47
    21.4
    35E-3
    Число с дробной частью (35Е2 означает 3500)
    Логический (булевый, boolean) true
    false
    Этот тип имеет два значения: true (истина, да), false (ложь, нет)
    NULL null Этот тип данных имеет одно значение — null
    Массив (Array) Этот тип данных имеет одно множество значений, которые могут быть различных типов
    Объект (Object) Программный объект, определяемый своими свойствами
  • Для того, чтобы узнать какой тип переменной, нужно воспользоваться функцией:
  • gettype(имя_переменной);
  • Для явного задания типа можно воспользоваться одним из двух способов:
  • Имя_переменной=(int) 12.45 //результат 12 Settype(имя_переменной, "тип") < ?php $x="PHP"; $s=gettype($x); echo $s, " "; settype($e,"integer"); $s=gettype($e); echo $s, " "; $d=(int)24.4; $s=gettype($d); echo $s, " ", $d; ?> Константы языка PHP для чайников
  • Константой называется именованная величина, которая не изменяется в процессе выполнения программы (скрипта).
  • В отличие от переменных, вы не можете изменять значения констант, которые были им присвоены при их объявлении. Константы удобно использовать для хранения значений, которые не должны изменяться во время работы программы. Константы могут содержать только скалярные данные (логического, целого, плавающего и строкового типов).
  • В РНР константы определяются функцией define(). Вот ее синтаксис:
  • define($name, $value, $case_sen);

    $name — имя константы.
    $value — значение константы.
    $case_sen — необязательный параметр логического типа, указывающий, следует ли учитывать регистр букв (true) или нет (false).

    Define("pi",3.14,true); echo pi; //Выводит 3.14

  • Для проверки существования константы можно использовать функцию defined(). Данная функция возвращает true, если константа объявлена. Пример:
  • //Объявляем константу pi define("pi",3.14,true); if (defined("pi")==true) echo "Константа pi объявлена!"; //Скрипт выведет "Константа pi объявлена!" Различия между константами и переменными в языке PHP для чайников
  • У констант нет приставки в виде знака доллара ($).
  • Константы можно определить только с помощью функции define(), а не присваиванием значения.
  • Константы могут быть определены и доступны в любом месте без учета области видимости.
  • Константы не могут быть определены или аннулированы после первоначального объявления.
  • Константы могут иметь только скалярные значения.
  • Программирование на языке PHP для чайников. Часть 1 was last modified: Март 3rd, 2016 by Admin

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

    Говоря проще, PHP это язык программирования, специально разработанный для написания web-приложений (сценариев), исполняющихся на веб-сервере.

    Аббревиатура PHP означает “Hypertext Preprocessor (Препроцессор Гипертекста)". Синтаксис языка берет начало от C, Java и Perl. PHP достаточно прост для изучения. Преимуществом PHP является предоставление веб-разработчикам возможности быстрого создания динамически генерируемых web-страниц.

    Возможности PHP

    Существуют три основных области, где используется PHP.

    Создание скриптов для выполнения на стороне сервера. PHP наиболее широко используется именно таким образом. Все, что для этого понадобится, это парсер PHP (в виде программы CGI или серверного модуля), веб-сервер и браузер. Чтобы просматривать результаты выполнения PHP-скриптов в браузере, необходим работающий веб-сервер и установленный PHP.

    Создание скриптов для выполнения в командной строке. Вы можете создать PHP-скрипт, способный запускаться вне зависимости от веб-сервера и браузера. Все, что потребуется - парсер PHP. Такой способ использования PHP идеально подходит для скриптов, которые должны выполняться регулярно, например, с помощью cron (на платформах *nix или Linux) или с помощью планировщика задач (Task Scheduler) на платформах Windows. Эти скрипты также могут быть использованы в задачах простой обработки текстов. Дополнительная информация находится здесь.

    Создание приложений GUI, выполняющихся на стороне клиента. Возможно, PHP является не самым лучшим языком для создания подобных приложений, но, если PHP хорошо известен и есть желание использовать некоторые его возможности в своих клиент-приложениях, то можно использовать PHP-GTK для создания таких приложений. Подобным образом можно создавать и кросс-платформенные приложения. PHP-GTK является расширением PHP и не поставляется вместе с дистрибутивом PHP.

    История PHP

    Истоки PHP лежат в старом продукте, имевшем название PHP/FI . PHP/FI был создан Расмусом Лердорфом в 1995 году и представлял собой набор Perl-скриптов для ведения статистики посещений его резюме.

    Расмус Лердорф (англ. Rasmus Lerdorf; р. 22 ноября 1968) - датский программист (ныне живущий в Канаде), написавший в 1994 году набор скриптов на Perl/CGI.

    Развитие web еще только начиналось, никаких специальных средств для решения таких задач не было, и к автору хлынул поток сообщений с вопросами. Лердорф начал бесплатно раздавать свой инструментарий, названный «Personal Homepages Tools» - («Инструменты для персональных домашних страниц»). Очень скоро потребовалась большая функциональность и Расмус пишет новую, намного более обширную версию на C, работающую с базами данных и позволяющую пользователям разрабатывать простейшие web-приложения. Расмус Лердорф решил выложить исходный код PHP/FI на всеобщее обозрение, исправление ошибок и дополнение.

    PHP/FI (Personal Home Page / Forms Interpreter - Персональная Домашняя страница / Интерпретатор Форм) включал в себя базовую функциональность сегодняшнего PHP. Он имел переменные в стиле Perl, автоматическую интерпретацию форм и возможность встраиваться в html-код. Собственно синтаксис языка имел много общего с Perl, хотя и был намного проще и ограниченнее.

    В 1997 выходит PHP/FI 2.0 . Вторая версия C-имплементации обозначила группу пользователей: несколько тысяч людей по всему миру, с примерно 50 000 доменами, что составляло около 1% всего числа доменов Интернета. Несмотря на то, что разработкой занималось уже несколько людей, PHP/FI 2.0 все еще оставался крупным проектом одного человека.

    Официально PHP/FI 2.0 вышел только в ноябре 1997 года, после проведения большей части своей жизни в бета-версиях. Вскоре после выхода его заменили альфа-версии PHP 3.0.

    PHP 3.0 была первой версией, напоминающей PHP, каким мы знаем его сегодня. В 1997 году Энди Гутманс (Andi Gutmans) и Зив Сураски (Zeev Suraski) переписали код с начала: разработчики сочли PHP/FI 2.0 не пригодным для разработки приложения электронной коммерции, над которым они работали для проекта Университета. Для совместной работы над PHP 3.0 с помощью базы разработчиков PHP/FI 2.0 Энди, Расмус и Зив решили объединиться и объявить PHP 3.0 официальным преемником PHP/FI, разработка же PHP/FI была практически полностью прекращена.

    К концу 1998, PHP использовался десятками тысяч пользователей. Сотни тысяч web-сайтов сообщали о том, что они работают с использованием языка. В то время PHP 3.0 был установлен приблизительно на 10% серверах Интернета!

    PHP 3.0 был официально выпущен в июне 1998 года после 9 месяцев публичного тестирования.

    К зиме 1998 года, практически сразу после официального выхода PHP 3.0, Энди Гутманс и Зив Сураски начали переработку ядра PHP. В задачи входило увеличение производительности сложных приложений и улучшение модульности базиса кода PHP. Расширения дали PHP 3.0 возможность успешно работать с набором баз данных и поддерживать большое количество различных API и протоколов, но PHP 3.0 не имел качественной поддержки модулей и приложения работали не эффективно.

    Новый движок, названный "Zend Engine" (www.zend.com) (от имен создателей: Zeev и Andi), успешно справлялся с поставленными задачами и впервые был представлен в середине 1999 года. PHP 4.0 , основанный на этом движке и принесший с собой набор дополнительных функций, официально вышел в мае 2000 года, почти через два года после выхода своего предшественника PHP 3.0. В дополнение к улучшению производительности, PHP 4.0 имел еще несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций.

    Пятая версия PHP была выпущена разработчиками 13 июля 2004 года. Изменения включают обновление ядра Zend (Zend Engine 2), что существенно увеличило эффективность интерпретатора. Введена поддержка языка разметки XML. Полностью переработаны функции ООП, которые стали во многом схожи с моделью, используемой в Java. В частности, введён деструктор, открытые, закрытые и защищённые члены и методы, окончательные члены и методы, интерфейсы и клонирование объектов. В последующих версиях также были введены пространства имён, замыкания и целый ряд достаточно серьёзных изменений, количественно и качественно сравнимых с теми, которые появились при переходе на PHP 5.0 .

    Шестая версия PHP 6.0 разрабатывалась с октября 2006 года. Было сделано множество нововведений, как, например, исключение из ядра регулярных выражений POSIX и «длинных» суперглобальных массивов, удаление директив safe_mode, magic_quotes_gpc и register_globals из конфигурационного файла php.ini. Одним из основных новшеств должна была стать поддержка Юникода. Однако в марте 2010 года разработка PHP6 была признана бесперспективной из-за сложностей с поддержкой Юникода. Исходный код PHP6 перемещён на ветвь, а основной линией разработки стала версия 5.4.

    В 2014 году было проведено голосование, по результатам которого следующая версия получила название PHP 7 . Выход новой версии планировался в середине октября 2015 года. В марте 2015 года Zend представили инфографику в которой описаны основные нововведения PHP 7.

    Архитектура PHP

    PHP является интерпретатором с встроенным блоком трансляции, оптимизирующим ход интерпретации.

    Использование интерпретатора (а значит и PHP) имеет свои неоспоримые преимущества:

    1. Нет необходимости заботится об освобождении выделенной памяти, не нужно закрывать файлы по окончании работы с ними – всю рутинную работу сделает интерпретатор, поскольку программа выполняется под его бдительным контролем;

    2. Не нужно думать о типах переменных, а также не нужно объявлять переменную до его первого использования;

    3. Отладка программ и обнаружение ошибок существенно упрощаются – интерпретатор полностью контролирует этот процесс;

    4. В контексте веб-приложений, интерпретатор также имеет еще очень важное преимущество – нет опасности «зависания» сервера при неправильной работе программы.

    Синтаксис PHP

    Синтаксис PHP подобен синтаксису языка Си. Некоторые элементы, такие как ассоциативные массивы и цикл foreach , заимствованы из Perl.

    Для работы программы не требуется описывать какие-либо переменные, используемые модули и т. п. Любая программа может начинаться непосредственно с оператора PHP.

    Простейшая программа на PHP выглядит следующим образом:

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

    Переменные и типы данных

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

    К скалярным типам данных относятся:

    целый тип (integer),
    вещественный тип данных (float, double),
    логический тип (boolean),
    строковый тип (string),
    и специальный тип NULL.

    К нескалярным типам относятся:

    «ресурс» (resource),
    массив (array),
    объект (object),

    К псевдотипам относятся:

    mixed любой тип
    number число (integer либо float)
    callback (string или анонимная функция)
    void отсутствие параметров

    Диапазон целых чисел (integer) в PHP зависит от платформы (обычно, это диапазон 32-битных знаковых целых чисел, то есть, от −2 147 483 648 до 2 147 483 647). Числа можно задавать в десятичной, восьмеричной и шестнадцатеричной системах счисления.

    Диапазон вещественных чисел (double) также зависит от платформы (для 32-битной архитектуры диапазон позволяет оперировать числами от ±1.7×10−308 до ±1.7×10+308).

    PHP предоставляет разработчикам логический тип (boolean), способный принимать только два значения TRUE («истина») и FALSE («ложь»). При преобразовании в логический тип число 0, пустая строка, ноль в строке «0», NULL и пустой массив считаются равными FALSE. Все остальные значения автоматически преобразуются в TRUE.

    Строка может быть определена тремя различными способами.

    • одинарными кавычками
    • двойными кавычками
    • heredoc-синтаксисом

    Простейший способ определить строку - это заключить ее в одинарные кавычки (символ "). Чтобы использовать одинарную кавычку внутри строки ее необходимо предварить символом обратной косой черты (\), т. е. экранировать. Если обратная косая черта должна идти перед одинарной кавычкой либо быть в конце строки, необходимо продублировать ее. Нет необходимости экранировать саму обратную косую черту.

    Если строка заключена в двойные кавычки ("), PHP распознает большее количество управляющих последовательностей для специальных символов:

    heredoc-определение (PHP):

    Переменные внутри heredoc интерпретируются. Если вы хотите точно определить конец имени, заключайте имя переменной в фигурные скобки.

    $s =