Взгляд в будущее (PHP) |
||||
---|---|---|---|---|
Введение Данная статья, прежде всего, предназначена для программистов на PHP, которые
интересуются самыми последними усовершенствованиями языка. В этой статье я прослежу историю языка PHP с самого начала до текущего состояния дел. И приведу свое мнение о будущем развитии этого языка программирования. История PHP PHP/FI: история с ископаемых времен Первая версия PHP называлась PHP/FI и была создана Расмусом Лердорфом в далеком 1995 году. Это был еще не язык программирования, а всего лишь набор скриптов на языке Perl. Расмус Лердорфм использовал PHP/FI для сбора статистики посещаемости своей домашней страницы, на которой находилось его резюме. Как это обычно бывает, требовалась все большая функциональность, и Расмус пишет (уже на языке С) новую версию, которую можно использовать для разработки более серьезных веб-приложений. С этих самых пор PHP становится "Open source"-проектом. PHP/FI расшифровывается как Personal Home Page / Forms Interpreter, что можно перевести, как "интерпретатор форм для домашних страниц". Уже в этой версии PHP имел много общего с сегодняшней версией: переменные в стиле Perl, автоматическую интерпретацию форм, возможность встраиваться в HTML код. Язык, как не трудно догадаться, был похож на Perl, хотя синтаксис стал более понятным (да простят меня поклонники Perl'а) и менее гибким. Вторая версия PHP/FI выходит в 1997 году. Число пользователей значительно выросло по сравнению с предыдущей версией. К тому же разработкой уже занимается не один человек. Но вторую версию нельзя назвать слишком удачной, так как... PHP3: прорыв ... в этом же году выходит третья версия PHP. Энди Гутманс (Andi Gutmans) и Зив Сураски (Zeev Suraski) полностью переписали интерпретатор и назвали свой язык просто PHP. Аббревиатура PHP содержит рекурсивный акроним, и расшифровывается, как "PHP: Hypertext Preprocessor", то есть "препроцессор гипертекста". Изначально PHP3 разрабатывался для электронной торговли, но стал использоваться и в других веб-приложениях. Официальный релиз третей версии был выпущен в 1998 году, когда он пользовались на сотнях тысячах веб-сайтов, и был установлен приблизительно на 10% Интернет-серверов. PHP4: следующий шаг к успеху Сразу после выхода PHP3, Энди Гутманс и Зив Сураски стали работать над четвертой версией языка. Прежде всего, было переработано ядро, в результате чего был создан новый движок, который получил название Zend Engine (от слияния имен Zeev и Andi). Официальная версия PHP4 вышла в 2000 году и включала ряд существенных доработок. Прежде всего, это полноценная поддержка сессий, безопасные способы получение данных от пользователя, буферизация вывода и нововведения в самом языке. PHP4 пользуются уже несколько миллионов сайтов, что составляет более 20% доменов Интернета. В четвертой версии появилась поддержка объектно-ориентированного программирования (поддержку ООП в PHP3 трудно назвать даже поддержкой). Я употребляю термин поддержка, потому что назвать PHP4 полностью объектно-ориентированным языком программирования трудно. Но даже такую примитивную реализацию основных концепций ООП разработчики с удовольствием использовали. PHP5: продолжение следует? Сейчас набирает обороты пятая версия PHP. В этой версии язык стал по настоящему объектно-ориентированным и стал более похожем на Java, чем на Perl. Позволю себе кратко перечислить новые возможности в этой области:
Разумеется, в PHP5 поддерживаются различные передовые технологии, такие как XML и SOAP. Не осталась в стороне и работа с базами данных: появилось новое расширение MySQLi, которое поддерживает все последние "навороты" MySQL 4.1. PHP6: нет предела совершенству В жесткой схватке со своими конкурентами (Perl, ASP) язык PHP должен постоянно совершенствоваться. Что же можно сделать, чтобы еще улучшить язык? Стандартная библиотека Каждый язык программирования состоит собственно из самого языка и стандартной библиотеки. Существуют тысячи различных нестандартных библиотек для PHP, но есть и пару стандартных вроде PEAR и PECL. Очень бы хотелось иметь одну стандартную объектно-ориентированную библиотеку, которая бы распространялась вместе с PHP. В такую библиотеку должны входить как различные классы для работы с БД, XML и так далее, так и классы для простого создания сайтов, например, гостевые, форумы, ... В последней версии PHP уже появились стандартные классы для работы БД, но это только первый шаг. Типизированные переменные Сейчас принято считать язык полностью объектно-ориентированным, если все переменные являются объектами, например C#. В PHP тип переменной вообще определяется интерпретатором, а приведение типов осуществляется автоматически. Для языка, основной задачей которого является вывод текста, это, конечно, плюс, ведь любую переменную можно легко привести к строковому типу. ООП предлагает другое решение: каждый тип, который нужно представить в виде строки, должен иметь метод для явного преобразования типов. В PHP такой метод называется __tostring(): class String { private $S = ''; public function __construct($S = '') { $this->S = $S; } public function __tostring() { return $this->S; } } $S = new String("Hello, world!"); echo $S; В данном примере я показал, как может выглядеть простейшая реализация класса для работы со строками. Конечно, сюда надо добавить методы для различных операций со строками: сложение, поиск и тому подобные. Производительность Для интерпретируемых языков производительность всегда больная тема. Создатели PHP прикладывают максимум усилий для увеличения производительности своего детища. Надеюсь, они не оставят своих усилий в этом направлении, и когда-нибудь библиотеку языка PHP напишут не на C, а на самом PHP. Свойства Во всех объектно-ориентированных языках программирования имеются, так называемые, "умные поля" - свойства. В PHP есть возможности для косвенной реализации полей при помощи методов __set и __get: class Foo { private $a = ''; function __set($Name, $Value) { if ($Name == 'A') $this->a = $Value; } function __get($Name) { if ($Name == 'A') return $this->a; else return ''; } } $Object = new Foo(); $Object->A = 'Hello, world!'; echo $Object->A; Методы __set и __get вызываются при обращении к полю класса, которого не существует. Это обращение можно перехватить и подставить нужное поле. Псевдо-недостатки Есть вещи, которые некоторые относят к недостаткам, но именно они и являются достоинствами, которые надо сохранить в следующих версиях. $this->... Для обращения к любому члену класса необходимо использовать конструкцию "$this->". Это поначалу ставит новичков в тупик, и раздаются крики "кто это придумал!?", "почему программа не работает", особенно, если на отлов ошибки уходит довольно много времени. Признаюсь, я был одним из таких кричащих. По собственному опыту скажу, как этого избежать: в файле php.ini нужно прописать следующую строку: error_reporting = E_ALL|E_STRICT Теперь при попытке использовать любую необъявленную переменную вам будет выдано предупреждение. global Использование глобальных переменных в функциях из той же оперы, что и предыдущий псевдо-недостаток. В идеальном мире функция не должна обращаться к глобальным переменным (которых также не должно быть), а реальности, если уж приходится это делать, то это надо четко указывать с помощью директивы global. Заключение Очень бы хотелось, чтобы пятая версия была не последний, а вышла бы шестая и седьмая версии с гордым рекурсивным именем. |