Главная Статьи Написать
 
Начнём
Введение
Инсталяция
Конфигурирование
Безопасность
Справочник Языка
Базовый синтаксис
Типы
Переменные
Константы
Выражения
Операции
Структуры управления
Функции
Классы и Объекты
Ссылки. Разъяснение.
Возможности
Обработка Ошибок
Создание изображений и манипуляции с ними
HTTP-аутентификация в PHP
Куки
Обработка загрузки файлов
Использование удалённых файлов
Обслуживание соединений
Постоянные соединения с базами данных
Безопасный режим
Использование PHP из командной строки
Функции. Справочник.
Функции, специфические для Apache
Array-функции
Aspell-функции [не рекомендуются]
BCMath математические функции произвольной точности
Bzip2 Compression-функции
Calendar-функции
CCVS API-функции
Функции поддержки COM для Windows
Class/Object-функции
ClibPDF-функции
Crack-функции
CURL, Client URL Library-функции
Cybercash payment-функции
Crédit Mutuel CyberMUT-функции
Cyrus IMAP -функции администрирования
Функции типов символов
Функции абстрактного слоя БД (dbm-стиль)
Дата и Время
dBase-функции
DBM-функции
dbx-функции
DB++-функции
Direct IO-функции
Функции директорий
DOM XML-функции
.NET-функции
Обработка ошибок и логинг
FrontBase-функции
filePro-функции
Функции файловой системы
Forms Data Format-функции
FriBiDi-функции
FTP-функции
Функции работы с функциями
Gettext
GMP-функции
HTTP-функции
Hyperwave-функции
Hyperwave API-функции
ICAP-функции [не рекомендуются]
iconv-функции
Image-функции
IMAP, POP3 и NNTP-функции
Informix-функции
InterBase-функции
Ingres II-функции
IRC Gateway-функции
Java
LDAP-функции
Mail-функции
mailparse-функции
Mathematical-функции
Многобайтные строки
MCAL-функции
Mcrypt Encryption-функции
Mhash-функции
Mimetype-функции
Microsoft SQL Server-функции
Ming-функции для Flash
Прочие функции
mnoGoSearch-функции
mSQL-функции
MySQL-функции
Mohawk Software -функции обработчика сессии
muscat-функции
Network-функции
Ncurses -функции управления терминалом
Lotus Notes-функции
Unified ODBC-функции
Oracle 8-функции
OpenSSL-функции
Oracle-функции
Ovrimos SQL-функции
Управление выводом
Перегрузка свойств объектов и вызовов методов
PDF-функции
Verisign Payflow Pro-функции
PHP. Опции & Информация
POSIX-функции
PostgreSQL-функции
Управление процессом
Выполнение программы
Printer-функции
Pspell-функции
GNU Readline
GNU Recode-функции
Функции регулярных выражений (Perl-совместимые)
qtdom-функции
Функции регулярных выражений (POSIX расширенная)
Semaphore, Shared Memory и IPC-функции
SESAM database-функции
Обслуживание сессий
Shared Memory-функции
Shockwave Flash-функции
SNMP-функции
Socket-функции
String-функции
Sybase-функции
URL-функции
Функции переменных
vpopmail-функции
W32api-функции
WDDX-функции
XML parser-функции
XMLRPC-функции
XSLT-функции
YAZ-функции
YP/NIS-функции
Zip File-функции (доступ только для чтения)
Zlib Compression-функции
Расширение PHP 4.0
Обзор
Возможность расширения
Строение исходного кода
Система автоматического построения РНР
Создание расширений
Использование расширений
Решение проблем
Исходные Ресурсы. Обсуждение.
Приём аргументов
Создание переменных
Дублирование содержимого переменной: конструктор Copy
Возвращаемые значения
Печать информации
Startup и Shutdown-функции
Вызов пользовательских функций
Поддержка файлов инициализации
Что дальше?
Справочник: некоторые макросы конфигурации
Макросы API
FAQ: Frequently Asked Questions
Общая информация
Списки рассылки
Получение PHP
Вопросы о базах данных
Инсталяция
Проблемы построения
Использование PHP
PHP и HTML
PHP и COM
PHP и другие языки
Переход от PHP 2 к PHP 3
Переход от PHP 3 к PHP 4
Другие вопросы
Приложения
История PHP и смежных проектов
Переход от PHP 3 к PHP 4
Переход от PHP/FI 2 к PHP 3
Отладка PHP
Расширение PHP
Список псевдонимов функций
Список зарезервированных слов
Список типов ресурсов
Список лексем разборщика
Об этом учебнике




История языка PHP

Создателем и основным инициатором создания языка РНР был Расмус Лердорф (Rasmus Lerdorf) — разработчик программного обеспечения, член группы разработчиков Apache и незаурядный человек, известный в кругах разработчиков во всем мире. Расмус разработал первую версию языка РНР для своего личного использования в конце 1994 года. Это была оболочка CGI которая позволяла отслеживать информацию о том, кто обращается на его персональный узел. На проделанную им работу обратили внимание многие пользователи, узнавшие о ней либо случайно, либо услышав мнение других пользователей, и попросили поделиться полученными результатами. В ответ на эти просьбы в следующем году Расмус собрал и выпустил программный паяет, получивший название Personal Home Page Tools (известный также как РНР Construction Kit — конструкторский набор РНР). Вскоре после этого под названием PHP/FI была выпущена версия 2 указанного программного обеспечения. Эта версия включала компонент FI (Form Interpreter — интерпретатор форм) — инструментальное средство синтаксического анализа запросов SQL.

К середине 1997 года язык РНР использовался приблизительно на 50 тысячах узлов во всем мире. Из-за такого широкого распространения поддержка программного обеспечения стала слишком трудоемкой для одного человека, даже такого сосредоточенного и энергичного, как Расмус. Поэтому теперь этот проект разрабатывается небольшой основной группой программистов, работающей в рамках движения за создание программного обеспечения с открытым исходным кодом по модели "доброжелательной хунты", в работу которой вносят вклад разработчики и пользователи во всем мире. Значительный вклад в разработку программного обеспечения РНР внесли также Зив Сураски и Энди Гутмане , два программиста из Израиля, которые разработали синтаксические анализаторы для версий РНРЗ и РНР4. Кроме того, эти программисты обобщили и расширили свою работу, оформив ее под названием Zend (очевидно, что слово Zend явно указывает на имена этих разработчиков — Zeev и Andi).

Четвертый квартал 1998 года остался в истории как период взрывообразного распространения программного обеспечения РНР (в этот период получили также всеобщее признание все прочие программные технологии с открытым исходным кодом). Согласно наиболее полным оценкам, в октябре 1998 года язык РНР в той или иной форме использовался только в 100 тысячах уникальных доменов. Но всего лишь через год по своей широте распространения, измеряемой количеством доменов, система РНР преодолела миллионный рубеж. Ко времени написания первого издания настоящей книги, в первой половине 2000 года, это количество возросло до двух миллионов доменов. А когда авторы подготавливали настоящее издание данной книги, средства поддержки языка РНР были инсталлированы примерно на 15 миллионах общедоступных Web-серверов (речь идет о количестве инсталляций программного обеспечения, а не о количестве единиц аппаратных средств). С помощью общедоступного программного обеспечения РНР создаются узлы самых разных категорий. К ним относятся, во-первых, узлы, обслуживающие массовый рынок, такие как Excite Webmail и Indianapolis 500, которые обеспечивают просмотр до миллиона страниц в сутки. Во-вторых, создаются узлы, посвященные деятельности привлекающей массовый интерес, наподобие Souiceforge.net и Epinions.com, которые, как правило, соответствуют требованиям по предоставлению более широких функциональных возможностей и обслуживают сотни тысяч пользователей. В-третьих, система РНЕ применяется для создания узлов электронной коммерции и буклетного обеспечения; к ним относятся узлы типа The Bookstore at Harvard.com и Sade.com (начальная Web-страница британского певца), которые должны быть визуально привлекательными к простыми в обновлении. С другой стороны, на некоторых узлах предусмотрена частичная поддержка РНР. В качестве примера можно назвать форумы, посвященные базе данных Internet Movie Database (imdb.com); крупные комплексы средств РНР, предназначенные для использования исключительно внутри самой компании, такие как каталоги LDAP (каталог LDAP на основе РНР с количеством записей, превышающим 100 тысяч, развернут в компании MCI WorldCom), а также системы учета и контроля неисправностей.

Новейшаа версия этих языковых средств, РНР5, позволила предоставить многим пользователям то, что они требовали в течение последних нескольких лет намного усовершенствованные функциональные средства объектно-ориентированного программирования. В языке РНР давно ощущалось отсутствие средств поддержки модели объектного программирования, позволяющих программистам применять для обработки данных знакомые им способы. Но результаты всех этих усилий еще кажутся многим программистам далекими от идеала, к тому же усилия по внедрению языка РНР в полностью объектно-ориентированные системы часто приводят к получению нежелательных результатов и снижению производительности. Объектная модель РНР, которая была полностью модернизирована в версии РНР5, позволила в значительной степени приблизить язык РНР к объектно-ориентированным языкам наподобие Java и С++, обеспечивая поддержку таких средств, как перегрузка, интерфейсы; закрытые переменные экземпляра и методы, а также другие стандартные конструкции объектно-ориентированного программирования. А после того, как разразился кризис, глубоко затронувший высокотехнологичные Интернет-компании (так называемые компании dot-com), система РНР оказалась востребованной на еще большем количестве узлов, чем когда-либо. Потребность в доступе к функциональным возможностям, предоставляемым по Web, практически не уменьшилась, к тому же продолжают появляться все новые и новые перспективные технологические стандарты, но возможности финансирования, необходимого для приобретения оборудования, лицензий и особенно для найма высококвалифицированных программистов, резко уменьшились. Поэтому система РНР, обеспечивающая быстрое освоение, ускоренную реализацию новых функциональных возможностей и низкие затраты на развертывание, предоставляет пользователям неоспоримые преимущества.