Архив

Archive for the ‘Delphi For PHP’ Category

Русская кодировка в DelphiForPHP

18 марта, 2009 2 комментария

После продолжительных испытаний Delphi For PHP решил наконец-то попробовать создать проект на русском языке. И тут меня поджидало огорчение. При визуальном проектировании формы все вроде бы нормально, однако при запуске проекта, вместо русских букв отображаются непонятные символы в неизвестной кодировке. Поблуждав немного по сети Интернет, нашел несколько статей, в которых описывается способ для отображения русских символов в кодировке UTF-8. Так что, после некоторых манипуляций можно получить полноценный проект на русском языке.

Что для этого нужно сделать.

1. В свойствах формы (Unit) необходимо поставить значение параметра Encoding равным Unicode (UTF-8):

encoding1

2. Необходимо изменить настройки IDE Delphi For PHP:

settings1

Установить параметр в группе Editor Options следующим образом:

  • Text Encoding – UTF-8

settings2

Теперь русский текст будет отображаться в кодировке UTF-8. К сожалению, мне так и не удалось заставить среду отображаться его в кодировке windows-1251. Изменение значения соответствующего параметра на форме (на windows-1251) не приводит к желаемому эффекту. Текст становится не читаемым. Видимо, это тема отдельного исследования. Но, с другой стороны, это имеет свои плюсы. Например, при использовании Ajax можно не беспокоиться о перекодировке, ведь по умолчанию, библиотека xajax обменивается данными именно в UTF-8 кодировке. Многие мои знакомые используют исключительно UTF-8 в своих проектах. Хотя, я всегда ориентировался на windows-1251.

Знакомство с Delphi For PHP 2.1

2 марта, 2009 8 комментариев

Блуждая как-то по сети Интернет в поисках чего-нибудь интересного, решил заглянуть и проведать компанию Borland, посмотреть, что же происходит с Delphi и C Builder’ом. На мое удивление в продуктах компании такого я не обнаружил вообще. Сейчас они производят программки для командной разработки проектов (из серии TeamSource). «Что же происходит?» — подумал я. Оказывается, Delphi теперь выходит из рук компании, которая называется CodeGear. Также у этой фирмы есть замечательный продукт RadStudio, который включает в себя все среды программирования: Delphi, CBuilder, Prism. Это продукт полностью совместим с Windows Vista и в полной мере поддерживает визуальные функции Windows Aero.

Однако больше всего мое внимание привлекла другая, наверное, более интересная программа – Delphi For PHP. Прелесть этого продукта в том, что он использует замечательную всем известную Borland’овскую архитектуру VCL для разработки полноценных PHP приложений. Иными словами мы получаем в распоряжение старую добрую среду разработки Delphi (ну, теперь это Rad Studio). И, используя полноценный ООП (с тем лишь исключением, что язык разработки – PHP), можно быстро и довольно просто писать сложные приложения. На первый взгляд довольно заманчиво. Итак, что же получилось после первого знакомства.

Действительно, перед нами все та же хорошо знакомая Delphi программистам среда разработки. Интерфейс практически не отличается от Delphi 2009 с той лишь разницей, что мы не оперируем формой как таковой (создание интерфейса происходит на некоем полотне – Page), а также существенно скуднее набор возможных компонентов.

001

Стоит отметить, что в панели Tool Palette доступны некоторые интересные компоненты. В частности, разработчики могут использовать компонент jQuery, JQSlider. А также, есть возможность использовать некоторые из компонентов Zend Framework: ZACL, ZAuth, ZAuthDB, ZAuthDigest, ZCache. Это открывает интересные возможности. Так как я активно использую библиотеку jQuery в своих проектах.

002Проба пера

Посмотрим теперь, как все выглядит на практике. Не буду описывать, как создать простое предложение из серии HelloWorld. На официальном сайте Delphi For PHP есть замечательный видео урок, в котором подробно описан процесс создания простейшего приложения. Рассмотрим структуру кода.

При создании проекта в Delphi For PHP получается шаблонный код следующего содержания:

require_once("vcl/vcl.inc.php");
//Includes
use_unit("forms.inc.php");
use_unit("extctrls.inc.php");
use_unit("stdctrls.inc.php");

//Class definition
class Unit1 extends Page
{
public $ListBox1 = null;
public $Button1 = null;
public $Label1 = null;
public $Edit1 = null;

function Button1Click($sender, $params)
{
$this->ListBox1->AddItem($this->Edit1->Text);
$this->Edit1->Text = "";
}

}

global $application;

global $Unit1;

//Creates the form
$Unit1=new Unit1($application);

//Read from resource file
$Unit1->loadResource(__FILE__);

//Shows the form
$Unit1->show();

?>

Строка require_once(«vcl/vcl.inc.php»); подключает основную библиотеку VCL for PHP. Кстати сказать, сама библиотека не является разработкой CodeGear, это проект сторонней организации qadram. И к тому же, проект является OpenSource’ным. Таким образом, можно отдельно использовать эту библиотеку в своих проектах совершенно бесплатно, вместо того, чтобы покупатб коммерческую среду Delphi For PHP. Но, как известно, у всего есть свои плюсы и минусы.

Три функции use_unit подключают библиотеки, в которых и происходит отрисовка используемых в проекте визуальных компонентов. Отрисовка сделана очень грамотно, так что компоненты одинаково хорошо выглядят и работают в операционных системах семейства Windows и Unix.

003

Использование Ajax
Классическое приложение, созданное в среде Delphi For PHP, использует HTTP запрос для обработки событий от элементов управления. При возникновении какого-либо события от элементов управления на веб-сервер методом POST отправляется запрос, после чего начинается изменения состояния соответствующих объектов. Это все работает неплохо и довольно быстро. Однако, более эффектно выглядит, да более удобно, когда перезагрузка страницы не происходит, а обновление состояний происходит в фоном режиме. Здесь на помощь приходит технология Ajax, и в среде существуют специальные механизмы для использования этой технологии. Базовые приемы очень хорошо показаны в видео-уроке.
При детальном изучении выясняется, что для реализации аякс запросов среда использует знаменитую библиотеку xajax. Это связано с некоторыми проблемами, потому как библиотека обладает не самым высоким быстродействием. Так, например, реализация ajax-запросов через библиотеку jQuery происходит раза в два быстрее, по крайней мере «на глаз». Но, конечно, ничто не мешает организовать это «вручную».

В общем целом Delphi for PHP оставил очень хорошее впечатление, и мне захотелось исследовать его еще тщательнее. Тем более что обнаруживаются некоторые проблемы. К примеру, возникает странная ошибка, когда проект находится на другом диске, не на том, где установлена сама среда. К тому же, приложение странно ведет себя в системах unix при использовании ajax, не говоря уже о том, что если отображение ошибок PHP разрешено, то выскакивает MessageBox с warning’ом, но это уже тема для отдельного исследования.