CodeGear

Вступление, или В ожидании «триала»
Больше месяца со дня официального пресс-релиза на сайте www.codegear.com сообщество программистов с нетерпением ждало trial-версию новой среды визуального программирования Delphi for PHP. Задержки в появлении пробного продукта вполне можно объяснить главной особенностью используемой в этот раз популярной технологии. Язык PHP является самой распространенной бесплатной серверной веб-технологией, что еще раз подтверждает новую стратегию компании CodeGear (подразделения Borland): она ориентируется на модные и широко используемые средства. Кроме того, не в пример технологии ASP.NET интерпретатор PHP давно и успешно используется на платформах UNIX, Linux, Windows и Mac OS X.
Особо стоит заметить, что весь код, создаваемый этой новой IDE, с формальной точки зрения ничем не может отличаться от написанного вручную в блокнотах простыми разработчиками. И если какой-то программист за время работы с демоверсией ухитрился написать некий продукт и продать его заказчику, CodeGear вряд ли смогла бы доказать сей факт, ибо Dephi for PHP базируется на открытых стандартах.

Мутация понятия «Delphi» — новая неразбериха
С выходом новой, пятой версии PHP в нем появилось множество нововведений, главным из которых, пожалуй, является новая объектная модель. PHP 5 может похвастать действительно развитой объектно-ориентированной инфраструктурой. Если в прежних вариантах языка были доступны только основные возможности объектно-ориентированного программирования, то теперь PHP вполне сравним с такими монстрами, как С++ и Java. Среди новых возможностей в PHP 5 имеются переработанная поддержка XML (в том числе модуль SimpleXML), встроенная поддержка SOAP, а также новые средства для работы с базами данных SQLite и MySQLi (объектно-ориентированный интерфейс для базы данных MySQL) и многое другое.
Сам синтаксис PHP до некоторой степени все-таки можно считать Си-подобным, и с технической точки зрения, наверное, было бы правильнее назвать новую IDE, к примеру, PHP Builder, тем более что само понятие Delphi уже прочно заменило название языка Object Pascal. Скептическую оценку новой среды можно услышать уже и от сторонников технологий Microsoft, и от PHP-программистов. Фразы вроде «страшно представить, что получится, когда миллионы любителей VCL начнут клепать свои веб-порталы» сильно напоминают критику в адрес новорожденного когда-то средства визуального программирования Borland Kylix.

Анонсы — в предвкушении чего?
Итак, в результате появления Delphi for PHP (http://codegear.com/Products/Delphi/DelphiforPHP/tabid/237/) у разработчиков на PHP (не у «дельфистов»!) появляются инструменты, давно знакомые приверженцам Delphi и позволяющие специалистам трудиться с небывалой продуктивностью. В пакет входит интегрированная среда разработки и открытая библиотека визуальных компонентов VCL for PHP. Программистам также предлагаются интегрированные средства написания, редактирования и отладки кода PHP (5.1.3). И главное тут — расстаться с иллюзиями и сразу уяснить, что в названии Delphi for PHP основной смысл несет именно аббревиатура PHP. Новая IDE должна понравиться в первую очередь мастерам PHP, а не «паскальщикам».
Продукт разработан совместно с Qadram Software (когда писалась эта статья, их сайт был «мертв») и представляет собой первую версию Qadram Studio, которая до сих пор не вышла из состояния «бета», работает исключительно под Windows и пока поддерживает разработку только для Firefox и Internet Explorer (при этом не всегда одинаково удачно). Для отладки приложений в инсталляционном пакете имеется веб-сервер Apache (2.0.52) и PHP (файлы с указанием версии продукта 5.1.3).

Где почем?
Официальная стоимость нового программного продукта — 299 долл.
На сайте www.ibase.ru, к примеру, Delphi for PHP продается за 7600 руб., включая НДС (по сведениям на 26 марта 2007 г.). Исходя из того что бесплатных решений на рынке IDE хватает, высказывания наподобие «единственная в своем роде» являются, мягко говоря, преувеличением со стороны заинтересованных лиц.
Кроме того, по степени амбициозности продукт не уступает, скажем, Borland Kylix 1.0 и точно так же вполне может показаться гадким утенком и сторонникам Delphi, и PHP-программистам.

Поддержка технологий
Основные поддерживаемые Delphi for PHP технологии можно представить в виде следующего списка:

  • VCL for PHP — библиотека визуальных компонентов с открытым исходным текстом, в которую входит более 50 расширяемых и допускающих повторное использование компонентов, легко интегрирующаяся с технологией AJAX;
  • встроенная интеграция с InterBase, MySQL, Oracle, Microsoft SQL Server и другими популярными базами данных;
  • интегрированный отладчик языка PHP;
  • разворачивание PHP-приложений на Windows, Linux, Solaris и других платформах;
  • поддержка многих национальных языков в приложениях;
  • разработка приложений баз данных в стиле «перетащить и оставить» с использованием средства Data Explorer для InterBase и MySQL;
  • редактор кода с поддержкой инструментальных средств Code Insight, Code Explorer и Code Templates, облегчающих и ускоряющих создание кода на языке PHP.

Delphi for PHP предоставляет некоторые возможности создания приложений с использованием технологии AJAX на базе библиотеки xajax. Есть также структура привязки данных, использующая PHPLens и ADOdb.
Кроме того, среда отличается высокой степенью интеграции с системами управления базами данных MySQL (5.0) и InterBase (8.0).
Разработчики IDE постарались максимально облегчить жизнь программистам и обеспечить относительную независимость от операционной системы, сохраняя идеологию визуального программирования. К примеру, клиентские библиотеки gds32.dll и libmySQL.dll встречаются в установленном пакете четыре раза.

Визуальный редактор
Знакомый каждому «дельфисту» редактор форм легко и привычно настраивается на минимальный шаг сетки, а по команде довольно быстро открывается текущий браузер с пустой страницей. Немного непривычно отсутствие команд сборки и компиляции, но к этому быстро привыкаешь. Стоит отметить, что во всплывающем меню редактора форм отсутствует команда View As Text (Просмотр в виде текста). И все же путем копирования в буфер можно получить представление формы достаточно длинного содержания. Как и в «обычном» Delphi, предусмотрены два типа форм — Form и Data Module.

Редактор кода
Редактор кода обеспечивает поддержку синтаксиса собственно языка PHP и всех зарезервированных слов, относящихся к VCL for PHP. Зато отсутствует подсветка для XHTML и Java Script, но это можно отнести на счет эстетических предпочтений разработчиков IDE, которые решили сконцентрироваться на основной технологии. С другой стороны, именно PHP и Java Script являются для программиста строительным материалом, что хорошо видно, к примеру, при рассмотрении модели событий. Тем не менее ручное произвольное добавление валидного кода в модуль, конечно, не возбраняется.

Инспектор объектов
В панели Object Inspector (Инспектор объектов) появилась новая закладка Java Script. Она создана для вставки обработчиков событий на языке Java Script. Однако такая возможность предоставляется далеко не для всех имеющихся компонентов, а только для тех, к которым можно применять клиентские обработчики событий.

Инспектор объектов

Библиотека компонентов VCLОбъектная модель (VCL for PHP)
Delphi для PHP включает интегрированную библиотеку классов в формате PHP 5, называемую Visual Component Library (VCL for PHP). Она содержит 50 компонентов, в том числе инструменты для создания таких объектов, как кнопки, ярлыки, кнопки-флажки, изображения, DHTML-меню, флэш-объекты, сети, «дерево видов», выпадающие списки и многое другое. Имеются компоненты для доступа к базам данных, таблицам, запросам и сохраненным процедурам, а также структурам данных и навигации. Скорее всего, именно эту библиотеку можно назвать основной особенностью продукта и главным его достоинством.
    Фрагмент внутреннего представления объекта класса Timer представлен в листинге.
    Таким образом, вы можете расширить свою библиотеку компонентов для PHP в любое время посредством собственных объектов либо использовать те, что предлагаются с открытой платформой PHP.
    Вот так выглядит автоматически созданный файл нового компонента MyEdit:
Для тех, кто до сих пор ожидал где-то тут встретить Object Pascal, пришла пора серьезного и окончательного разочарования, сопровождаемого глубокой переоценкой целей и возможностей. Эта конструкция меньше всего напоминает то, что еще два месяца назад принято было называть «Delphi». С другой стороны, остается под вопросом, насколько вообще вся парадигма VCL будет психологически приемлема для профессионалов PHP? Пятая версия PHP и без Delphi, сама по себе в достаточной степени революционна — в ней полностью переписано управление объектами, добавлено множество полезных возможностей (http://www.php.net/manual/ru/). Однако на просторах глобальной Сети до сих пор очень часто встречается хостинг с комбинацией MySQL 3 — PHP 4. Но к теме данной статьи не относятся описания, к примеру, ужасов несовместимости подверсий того же MySQL, хотя молва о них давно докатилась до простых «сухопутных» Delphi-программистов.

Справочник по VCL for PHP
Говоря о VCL, обязательно стоит отметить наличие исчерпывающего (хотя и довольно сухого) справочного руководства «VCL for PHP Reference», знакомство с которым в тандеме с менее важным в данном случае «PHP Manual» является хорошим заделом на пути к овладению мастерством работы с новой средой. В дополнение разработчики любезно предоставили широкий набор демопроектов, половина из них даже довольно быстро запускается с первого щелчка. Обидно, конечно, что в среде, рожденной для порталостроительства, автор так и не обнаружил простой возможности сменить в технологической цепочке отладки текущий веб-браузер: Delphi for PHP использует настройки операционной системы, что не всегда удобно.

Вставка нового компонента

Работа с базами данных: «Разработайте свой драйвер!»
Призыв фирмы-разработчика звучит немного угрожающе, но все становится просто и понятно при первом же рассмотрении возможностей доступа к данным, которые предлагаются в Delphi for PHP.
Видимо, создатели условно поделили потенциальных покупателей нового инструмента на горячих сторонников СУБД Borland InterBase и... всех остальных. Поэтому для доступа к базам данных кроме страниц компонентов Data Access и Data Controls с реализацией универсального механизма ADOdb можно найти уже знакомый каждому Delphi-программисту набор компонентов InterBase: IBDatabase, IBTable, IBQuery, IBStoredProc. Разработчики заботливо разместили в интегрированном справочном руководстве отдельные статьи на эту тему — «IBX for PHP Overview» и «Creating an InterBase PHP Database Application».
Для поклонников же остальных систем управления базами данных нелишним будет привести внушительный список с файлами для описания возможных значений свойства DriverName компонента Database (страница Data Access).
В каждом таком файле задан класс для работы с определенным типом СУБД. Забавно, что размер файлов колеблется от 353 байт (adodb-postgres8.inc.php) до 43 Кбайт (adodb-oci8.inc.php).
Как видно из списка свойств компонента Database в режиме дизайна, механизм подключения к базе данных внешне предельно прост и универсален. Подозрение вызывает лишь весьма «либеральное» поведение свойств компонентов в режиме дизайна. Так, к примеру, свойство Connected объекта Database можно без всяких последствий выставить как в true, так и в false — в сравнении с другими «классическими» борландовскими инструментариями это выглядит несколько дико. Проще говоря, устроить проверку подключения к базе, используя эти же компоненты в режиме дизайна, невозможно.

Список возможных баз данных

О том, как в Delphi for PHP организована поддержка конкретных СУБД, вы узнаете из полной версии статьи, размещенной на «Мир ПК-диске».


Листинг