Pull to refresh

Создание оконных приложений на PHP

Создание оконных приложений на PHP


Хотел бы поделиться личным опытом создания простенького оконного приложения на PHP.

При создании оконных приложений штатными средствами PHP не обойтись, поэтому для начала нужно выбрать среду для разработки нашего приложения. Среди всех инструментов больше всего выделяются два — это достаточно раскрученый PHP-GTK (www.gtk.php.net) и менее раскрученный, но не менее функциональный winbinder (www.winbinder.org).
Поковыряв оба инструмента я остановился на WinBlider.


winbinder имеет свой собственный формат данных — phpw, который Вы можете сразу смело привязывать к вашему любимому редактору кода. По умолчанию при запуске phpw файла открывается содержащийся в нём PHP скрипт и прогоняется через интерпретатор с уже подключеными библиотеками. Как Вы наверное поняли — учиться программировать на этой балалайке Вам придётся самим, однако в это нет ничего сложного, особенно человеку хоть немного знакомому с ООП в PHP. Однако даже незнакомый тоже сможет на нём кодить, так как по сути winbinder (в отличии от PHP-GTK) поддерживает и процедурное программирование. Кроме того winbinder весьма неплохо документирован, а инсталляционный архив уже содержит в себе несколько весьма любопытных примеров (особое внимание прошу обратить на редактор форм). У WinBlider'а есть ещё куча фишек, функций и интересностей, но о них я расскажу в следующих статьях, так как меня очень заинтересовала данная тематика. Чтобы не перегружать топик кодом я решил написать для примера простенький MD5 Encoder:
<?
include "include/winbinder.php";

// Даём метки окнам редактирования
define('IDC_EDITBOX1002', 1002);
define('IDC_EDITBOX1003', 1003);

// Рисуем окошко
$winmain = wb_create_window(null,
AppWindow,
'MD5 Hash Generator by S1B [SBT]',
WBC_CENTER, WBC_CENTER, 315, 134,
0x00000000, 0);

// Добавляем кнопки в окно

# Рисуем рамочку
wb_create_control($winmain, Frame, '', 10, 10, 290, 85, 0, 0x00000000, 0, 0);
# Рисуем надписи (лейблы)
wb_create_control($winmain, Label, 'Текст:', 23, 35, 45, 15, 0, 0x00000000, 0, 0);
wb_create_control($winmain, Label, 'Hash:', 23, 65, 45, 15, 0, 0x00000000, 0, 0);
# Рисуем окошки редактирования (нижнее будет неактивным), и загоняем их данные в переменные
$text=wb_create_control($winmain, EditBox, '', 78, 30, 210, 20, IDC_EDITBOX1002, 0x00000000, 0, 0);
$hash=wb_create_control($winmain, EditBox, '', 78, 60, 210, 20, IDC_EDITBOX1003, 0x00000040, 0, 0);
wb_set_handler($winmain, "process_main");
wb_main_loop();

function process_main($window,$id) {
# Объявляем данные окошек редактирования глобальными
global $text,$hash;
switch($id) {
case IDC_EDITBOX1002:
wb_set_text($hash,md5(wb_get_text($text)));
break;
case IDCLOSE:
wb_destroy_window($window);
break;
}
}
?>


Код достаточно прост и думаю посидев с документацией 1-2 часа Вы начнёте разбираться в нём так же, как и я.
Ну а теперь кульминация — собираем форточку… Для этого предлагаю создать отдельную директорию и перенести наш скрипт туда. Так же нужно перенести туда папку include из phpcode директории winbinder. Готово?
Теперь компилируем! Эээ… стоп не нужно хвататься за Roadsend IDE. Как? А вот так! Он не поддерживает winbinder, а поддерживает только GTK, причём судя по туманным ответам разработчиков Roadsend на их форуме — поддержку winbinder можно ещё долго ждать. Значит будем искать другие пути, и имя этим путям Bamcompile (www.bambalam.se/bamcompile/). Смело скачиваем версию 1,1. Теперь выделяем для нашего компилятора отдельную папку, заходим в командную строку и гордо командуем:
bambalam -w -c C:\PHP_Projects\MD5_Hash_Generator\ md5.phpw md5.exe
Если всё сделано правильно, то в директории с компилятором будет лежать Ваше «толькочтоскомпилированное» приложение.
Всё гениальное просто!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.