Предполагается, что читатель достаточно хорошо представляет себе, что такое РНР, однако для полноты картины напомним: РНР (это рекурсивный акроним - РНР: Hypertext Preprocessor) представляет собой язык с открытым исходным кодом (open source) для выполнения на сервере сценариев, создающих динамические веб-страницы. Помимо независимости от броузеров он предлагает простое и универсальное, независимое от платформы решение для электронной коммерции и сложных веб-приложений, в том числе управляемых базами данных.
Почему РНР?
Для РНР характерны:
Низкая и плавная кривая обучения.
• Развитая функциональность для работы с базами данных,строками, сетевыми соединениями, поддержка операций с файловыми системами, Java, COM, XML, CORBA, WDDX и Macromedia Flash.
Совместимость с платформами: UNIX (любые разновидности), Win32 (NT/95/98/2000), QNX, MacOS (WebTen), OSX, OS/2 и BeOS.
• Короткий цикл разработки. Новые версии с исправлением найденных ошибок, дополнительными функциями и прочими усовершенствованиями выпускаются каждые несколько месяцев.
• Энергичное и доброжелательное сообщество разработчиков. Изобилие программных примеров и бесплатного кода. Группа разработчиков РНР отлично справляется с обеспечением новичков ресурсами и поддержкой.
Простота расширения. Можно легко создавать собственные расширения языка. • Простой синтаксис, напоминающий С. Опытные программисты С, C++, Perl и командных сценариев легко осваивают РНР.
Добавьте к этому открытость кода и бесплатность.
Эволюция РНР
Для новичков в РНР предлагается краткий обзор его происхождения, текущего состояния и направлений дальнейшего развития.
РНР в прошлом
Мы изложим историю РНР лишь кратко, а читателям, интересующимся подробностями, рекомендуем обратиться к ознакомительным материалам по РНР на http://conf.php.netцли прочесть раздел Brief History (краткая история) руководства по PHP/FI 2 на http://php.net/docs.php.
Замысел РНР возник у Расмуса Лердорфа (Rasmus Lerdorf) осенью 1994 года. Версия 1 этого языка появилась в начале 1995 года и была положительно воспринята небольшой группой пользователей. Позднее в том же году вышла версия 2, за которой последовали версии 3 и 4 в 1997 и 2000 годах, соответственно.
РНР в настоящее время
Во время написания этой книги рост популярности РНР составлял 15% в месяц, и он использовался по меньшей мере в семи миллионах доменов (источник - Netcraft Survey), то есть 20% всех зарегистрированных на тот момент доменов. А это существенная часть рынка, если еще учесть, что в это число не входят многочисленные установки в корпоративных сетях и закрытых серверах разработчиков.
РНР может работать на 7 основных платформах (стабильно), с 10 интерфейсами серверов (стабильно), поддерживает 40 стабильных расширений (и примерно столько же экспериментальных), предлагает поддержку свыше 20 баз данных. Эти цифры подтверждают, что своей нынешней популярности РНР достиг благодаря мощи и простоте использования.
РНР на арене
Прежде чем бегло изложить преимущества РНР4 над РНРЗ, хотелось бы поблагодарить тысячи читателей, тепло принявших книгу «Professional РНР Programming» издательства Wrox (ISBN 1-861002-96-3), вышедшую зимой 1999 года.1 Мы искренне надеемся, что данная книга станет дополнитель-
ным чтением для профессионалов, отражая все изменения, происшедшие с тех пор в мире РНР.
В РНРЗ синтаксический анализ и компиляция кода РНР происходили одновременно, благодаря чему сокращалось базовое время запуска до начала выполнения. Это было основной причиной быстрого выполнения простых сценариев. К сожалению, при необходимости обработки сложных сценариев возникала избыточность, связанная с повторяющимся синтаксическим анализом участков кода, например при обработке циклов и многократных вызовах функций. Виновато было основное ядро, и стало очевидно, что именно на нем надо сосредоточить усилия, направленные на повышение производительности, - это и стало побудительным мотивом к разработке РНР4.
Здесь нельзя не упомянуть о большом вкладе фирмы Zend в разработку РНР. Настоятельно рекомендуем посетить http://www.zend.com/zend/whats-new.phpи узнать подробности о новых возможностях, появившихся в РНР4.
Перспективы РНР
Машина сценариев РНР4 представляет собой переработанную машину сценариев РНРЗ, предоставляет более ясную инфраструктуру и сервисы для функциональных модулей и реализует синтаксис языка. Эта пересмотренная версия в значительной мере основана на тех же правилах синтаксического анализа, что и машина сценариев РНРЗ, что обеспечивает хорошую обратную совместимость и переход от РНРЗ к РНР4. Однако у этой медали есть и оборотная сторона — ограниченность усовершенствований языка в сравнении с РНРЗ.
При поддержке многочисленных разработчиков РНР фирма Zend Technologies Ltd начала переработку машины Zend Engine, в которой будут содержаться новые функции, усовершенствованы имеющиеся и решены некоторые из самых значительных проблем, с которыми сталкиваются сегодня разработчики РНР. Если вы пристально следите за развитием РНР, советуем поместить http://www.zend.com/zend/future.pkpcBouсписок избранных ссыпок, а также подписаться на еженедельный бюллетень новостей Zend 2.0 на http://www.zend.com/zend/zengine/.
РНРвсравнении
с другими языками сценариев
Для тех, кто перешел на РНР с других языков сценариев, мы включили этот раздел, в котором объясняется, почему они сделали правильный выбор.
РНР и ASP
ASP (Active Server Pages) является фирменным «языком» сценариев Microsoft. Вообще говоря, ASP - это не язык, а расширение Visual Basic для создания сценариев. По этой причине всякому, кто знаком с Visual Basic, относительно легко освоить ASP.
Каковы недостатки? Во-первых, ASP обычно работает медленнее, чем РНР. Фундамент ASP образует архитектура, основанная на СОМ. Поэтому когда программа ASP обращается к базе данных или осуществляет вывод данных для клиента, это происходит при посредстве СОМ-объектов других сервисов NT или уровней операционной системы. Эти связанные с СОМ накладные расходы могут накапливаться и приводить к тому, что во всех случаях, кроме выдачи простых страниц при среднем трафике, производительность оказывается невысокой. Во-вторых, ASP не вполне годится для переноса на другие платформы и интеграции со средствами GNU, а также средами и серверами open source.
Будучи фирменной системой Microsoft, ASP в основном применяется с ее же Internet Information Server (IIS), из-за чего ASP обычно выбирают ограниченно -для 32-разрядных систем Windows, поскольку для большинства серверов эта технология служит бесплатным приложением. Существуют версии ASP для UNIX (например, ChilliSoft ASP) и ряд интерпретаторов ASP для других систем и веб-серверов, однако для них стоимость системы с учетом ее производительности может оказаться неоправданно высокой. Решением данной проблемы может оказаться использование программы asp2php (http://asp2php.naken.cc/которая преобразует ASP в РНР.
Однако технология ASP.NETвесьма отличается. В будущем ASP может существенно поднять свою производительность и возможность масштабирования. Это будет достигнуто дальнейшим усилением архитектуры .NET/COM и управляющей среды. Однако реальных преимуществ можно достичь лишь при условии значительных затрат на различные сопутствующие серверы.
РНР и Cold Fusion
РНР работает практически на всех платформах, а версии Cold Fusion есть только для Win32, Solaris, Linux и HP/TJX. РНР требует больших начальных навыков программирования, в отличие от Cold Fusion с совершенной интегрированной средой разработки (IDE) и более простыми языковыми конструкциями. РНР менее требователен к ресурсам.
РНР и Perl
Будучи разработанным специально для Интернета, РНР имеет в этой области преимущества над Perl, поскольку Perl разрабатывался для бесчисленных применений (что отразилось на его виде). Форма и синтаксис Perl могут осложнить чтение сценариев Perl и их модификацию, когда она требуется.
Хотя Perl в ходу достаточно долго (он был разработан в конце 1980-х) и широко поддерживается, он превратился в сложную конструкцию из дополнений и расширений и часто просто избыточен. Формат РНР легче для восприятия при сохранении гибкости. РНР проще интегрируется с уже имеющимся HTML и предлагает функциональность, аналогичную Perl, но со значительно большим изяществом.
IPHP и Java
PHP проще использовать, чем Java, с его помощью легче строить веб-приложения, обладающие такими же преимуществами гибкости и масштабируемости. Работая с РНР, не обязательно обладать 5-летним опытом разработки программного обеспечения, чтобы создавать простые динамические страницы - для этого достаточно быть сообразительным, даже при небольшом опыте программирования.
Кроме того, Java часто обходится дороже, поскольку в большинстве компаний в конечном счете устанавливают отдельную машину для Java Enterprise и используют Oracle или другое дорогостоящее ПО. При всем этом РНР требует дальнейшего развития, поскольку не обладает такой же переносимостью и некоторыми удобными возможностями, такими как пул объектов или отображение баз данных, которые есть в Java. Эти вопросы учтены при проектировании машины сценариев Zend 2.0.
ЛицензированиеРНР
Ранее РНР выпускался как с лицензией GPL (General Public License), так и со своей собственной, и отдельные пользователи могли выбрать из них предпочтительную для себя. В настоящее время программа в целом выходит со своей крайне неограничительной лицензией РНР4 (http://download.php.net/ license/2J) 2.txt).
В период написания книги продукция Zend выпускалась под лицензией QPL (Q Public License). Подробности можно найти на http://www.zend.com/license/ ZendLicense/. Кроме того, в пресс-релизе компании говорилось о переходе на лицензию типа BSD, чтобы обеспечить совместимость с лицензией РНР и предоставить больше свободы для дальнейшего развития.
Список ресурсов
Даже количество ресурсов РНР ошеломляет. Вот некоторые достаточно важные ресурсы, которые часто упускают:
Веб-сайт РНР известен всем. Однако на нем можно найти массу информации. Часто имеет смысл покопаться на php.net, прежде чем двигаться куда-то еще. Иногда нужную информацию найти на этом сайте оказывается нелегко, но она стоит потраченных усилий.
Архивы почтового списка рассылки РНР содержат массу информации. Многие почтовые списки непрерывно архивировались в течение нескольких лет. В архивах хранятся ответы на многие вопросы.
Для РНР характерен очень быстрый цикл разработки. Добавление функций и исправление ошибок происходят ежедневно. Если требуется получить последнюю версию РНР, чтобы воспользоваться новой возможностью или исправлением ошибки, можно загрузить с этого сайта версию РНР, давность которой составляет несколько часов или дней.
• Веб-интерфейсы к хранилищу исходного кода РНР
Есть три разных средства для on-line просмотра репозитория CVS. CVS -это программное средство контроля версий, с помощью которого разработчики РНР справляются со многими сотнями файлов, образующих проект РНР. Дополнительные сведения о CVS можно получить на http://www.cvshome.org/.
PHPBuilder - это обширный сайт, куда помещают информацию о совместном использовании РНР и практически любых других продуктов. Здесь находится большое количество вспомогательной информации и документации.
Официальный сайт самого популярного веб-сервера в мире. На этом сайте есть документация по установке, настройке и решению проблем веб-сервера Apache, а также полезные сведения о создании для него собственных модулей.
MySQL является предпочтительной базой данных для многих программистов РНР. Она выпускается под открытой лицензией MySQL Free Public License. Дополнительные сведения об этой лицензии можно найти на официальном сайте MySQL.
Здесь можно познакомиться с историей PostgreSQL, загрузить экземпляр PostgreSQL, просмотреть официальную документацию и узнать многое другое, в том числе, как правильно произносить «PostgreSQL».