Pull to refresh

Delphi for PHP 2.0 — радость и разочарование.

Reading time 3 min
Views 11K
С Delphi я очень плотно дружу начиная со второй версии (по-моему 96-й год), но следить за новинками перестал после выхода восьмой версии, которая была ориентирована на .NET и компилировала приложения только под неё, а соответственно не представляла для меня абсолютно никакого интереса.

И вот в прошлом году у CodeGear, нового хозяина Delphi, вышла Delphi 2007 — довольно заметное событие, учитывая тот факт, что основной люд уже после продажи дельфи её похоронили. Изучая новые возможности IDE, случайно наткнулся на странный продукт — Delphi for PHP (d4php), а поскольку Delphi как IDE и как язык программирования я знаю немного хуже русского, решил воспользоваться моментом и посмотреть на PHP с другой стороны.

С первой версией d4php я играл неделю: довольно удобная реализация IDE для PHP, понятный механизм разработки, интересные идеи и фичи (как например использование AJAX для «перерисовки» страниц без единой строчки кода — галочкой «Use AJAX»). Но убило одно — огромнейшая куча багов, гигантская. Настолько большая, что сделать даже малюсенький полноценный сервис не представлялось возможным. К тому же d4php скорее была похода на средство для разработки интранет приложений, т.к. отсутствовала очень важная часть — шаблоны. Возможно где-то внутри, куда я не докапал, и было какое-то решение, но для разработки нормальных интернет-приложений d4php не подходила.

И снова новость о скором выходе Delphi 2009 заставила меня заглянуть на сайт CodeGear. И хоть D2009 представлена пока только в виде презенташек, мой поход оказался более чем удачный — я встретил Delphi for PHP 2.0.

Конечно по сравнению с первой версией продукта вторая — мощный рывок вперед:
• IDE привели в порядок — теперь работать в нем так же удобно, как и в D2007 — подсветка измененного кода, сворачивание блоков, рефакторинг — удивительно, что этого не было в первой версии
• Добавили шаблоны страниц. Простейшее использование — разработали каркас в любом приложении, скопировали на форму — все, теперь все контролы, которые вы искользуете, будут интегрированы в ваш дизайн. Очень полезная функция, приближающая d4php2 к реалиям современного сайтостроительства.
• Добавлена поддержка большого списка БД (MySQL, Interbase, MSSQL, Oracle и др.). Видимо эта фича ориентирована на сектор корпоративного ПО, но все равно приятно.
• Добавлена кучка полезных vcl-компонентов + пофиксены глюки в существовавших ранее (насколько качественно — с этим ознакомиться пока не успел — все впереди)
• Улучшен дебаггер.

Но без дегтя не смогли:

Во-первых, d4php2 официально в Россию не продается. Очень странное решение — неужели переслать почтой электронный ключ в Россию сложнее чем в штаты? И 250$ сейчас для серьезных разработчиков не самые большие деньги. Эх… Astalavista :)

А во-вторых, для того, чтобы d4php2 заработала, большинству неанглоязычному населению планеты необходимо предварительно обработать её напильником. О том, что там, почему и как исправить в самом конце поста.

В общем, идея развивается — и это прекрасно. Если CodeGear будет внимательнее относиться к разработке продукта, есть вероятность, что Delphi for PHP сможет сделать для web то же, что в свое время сделала для Win32 Delphi — позволить разрабатывать приложения доступно и «интуитивно-понятно». И как вариант, скоро в сети появятся приложения, написанные быдло-Delphi-кодерами на быдло-PHP.

Если интересно покопаться: www.codegear.com/products/delphi/php

Дальше конкретика — решение проблемы запуска приложений в Delphi for PHP 2.0. Тем, кто не ищет ответа на этот вопрос скорее всего читать будет не интересно.


Если после установки создать проект, на форму бросить какой-нибудь контрол и запустить, у некоторых могут вызелти ошибки:

Warning: require_once(vcl/vcl.inc.php) [function.require-once]: failed to open stream: No such file or directory in ... on line 2
Fatal error: require_once() [function.require]: Failed opening required 'vcl/vcl.inc.php)' (include_path='.:/usr/local/php5/lib/php') in ... on line 2

Такие или практически такие. Причина простая — include_path в php не проинициализировался правильно. Первопричина — файлы настроек apache и php хранятся теперь для каждого юзверя отдельно в C:\Documents and Settings\%username%\Application Data\CodeGear\Delphi for PHP\2.0\. Если имя пользователя указано с использованием отличных от латинских букв, то дирректива PHPIniDir в настройках apache работать не будет — то ли apache неверно её трактует, то ли php неправильно воспринимает. В общем есть два варианта — либо создать другого пользователя с именем, состоящим только из латинских букв, либо изменить конфиг apache так, чтобы он ссылался на копию php.ini, расположенную в «нормальной» директории. Для этого необходимо скопировать файл php.ini из C:\Documents and Settings\%username%\Application Data\CodeGear\Delphi for PHP\2.0\php\ в папку типа c:\d2php\php\, а затем изменить не сам конфиг, а шаблон конфига (httpd.template.conf), причем не в Application Data, а в «C:\Program Files\CodeGear\Delphi for PHP\2.0\apache2\conf\», так чтобы PHPIniDir ссылался на вашу копию. В этом случае при изменениях настроек php через IDE придется либо дополнительно править этот php.ini вручную, либо копировать уже настроенный из Application Data.
Tags:
Hubs:
+4
Comments 11
Comments Comments 11

Articles