На сегодняшний день язык PHP широко распространён, он прост в освоении и понимании, и наверное поэтому он так популярен у начинающих программистов. Без знаний PHP не поправить блок голосования на сайте, не отредактировать PHP шаблон, не вставить рекламный баннер. Многие идут дальше и изучают язык более углубленно, ведь это не только интересно, но и приносит стабильный доход, благо разнообразных предложений для PHP программистов всегда в избытке.
Но что делать, если хочется чего-то большего? Если надоело писать однотипные классы для онлайн-казино, ковыряться в Joomla/Drupal/PHPBB очередного заказчика?
Думаю, что многих посещала мысль начать писать Windows программы на любимом языке PHP, но дальше поиска по интернету и поверхностного изучения таких библиотек как PHP-QT и PHP-GTK дело, как правило, не доходит. Почему? Все ответы схожи — запутанно, сложно, ненаглядно, непонятно и т.д. Но сегодня уже есть качественно новая и перспективная среда для визуальной разработки программ на PHP под Windows и имя ей — PHP Devel Studio (сокр. DevelStudio).
[Обещанный накрутчик просмотров] Урок PHP Devel Studio 3.0
Что же представляет собой DevelStudio?
Это удобная и понятная визуальная среда программирования, которая позволяет создавать полноценные программы на языке PHP с поддержкой GUI. Теперь, для создания программ под Windows достаточно знать самый популярный язык программирования — PHP.
В этой статье я не буду описывать кнопочки и рюшечки этой среды разработки, не буду говорить о неких абстрактных возможностях и не буду устраивать детский сад с написанием «Hello world».
Мы поверхностно рассмотрим процесс написания полноценной программы под Windows и остановим своё внимание только на оригинальных и нестандартных решениях, которые определённо будут интересны всем.
Предыстория
Итак, в один прекрасный вечер я уже в который раз снова посетил сайт проекта «Denwer» с целью проверить, не вышло ли там обновление. К моему разочарованию ничего нового там не оказалось, по-прежнему я обнаружил лишь новую ругань в адрес разработчиков с обвинениями в выклянчивании пожертвований и абсолютном бездействии.
Меня не покидало желание отказаться от Denwer и написать свою, действителньо удобную и полезную программу для управления локальным веб-сервером. После недолгих поисков моё внимание привлекла среда разработки «DevelStudio». Она оказалось предельно удобной, понятной и самое удивительное — она открыла мне дорогу в мир Windows программ. Поразмыслив над логикой управления веб-сервером я приступил к написанию «Open Server».
Знакомство с DevelStudio
Первые несколько дней были потрачены на изучение среды и написание простейших программ. Нашлось несколько багов в работе самой среды разработки, они будут описаны в конце статьи. Так же были установлены два полезных дополнения (библиотека примеров + каталог классов и функций) и один неофициальный патч, дающий возможность сжатия программы UPX упаковщиком в момент компиляции.
Следует отметить, что у DevelStudio достаточное хорошее комьюнити, поэтому всегда есть возможность задать вопрос или получить совет у опытных пользователей среды, вплоть до самого разработчика.
PHP Devel Studio [Урок #1] — Интерфейс Среды Разработки
DevelStudio — это этакая смесь из Delphi и PHP, щедро приправленная компонентами этих самых Delphi и PHP. Чего стоит один только Alphaskin, который я использовал самым непосредственным образом при написании программы. Но обо всём по порядку…
Написание программы
При создании проекта мы получаем пустую форму. Она является основной и именно в этой форме я не создавал никаких элементов управления, в ней мною были добавлены управляющие функции, а сама форма была сделана скрытой. Чтобы при запуске вашей программы не отображалось никаких форм в свойствах проекта нужно установить режим «Тихий».
Затем были созданы следующие формы: Настройки, Просмотр логов, О программе, Ошибка и Первый запуск. За короткий срок во все формы были добавлены необходимые управляющие элементы, поля ввода, иконки и прочее. Всё это было сделано без единой строчки кода. Вот она мощь визуальной среды!
На следующей иллюстрации мы видим форму просмотра логов, а так же специальные вставки-шаблоны, они используются для организации мультиязычности. Замечу лишь, что для смены языка потребуется перезапуск программы.
Далее я начал добавлять первый PHP код. Как я уже писал, мы остановимся только на самых интересных моментах.
1. Стартовая функция (выполняется при загрузке программы)
Вот так получилось реализовать проверку на то, не была ли уже запущена программа:
$output = shell_exec(‘tasklist /nh /fi «Imagename eq Open Server.exe»‘); // получение списка процессов $ret = iconv(‘CP866′,’CP1251′,$output); if (substr_count($ret,’Open Server.exe’)>1) < c(‘trayIcon1’)->enabled = false; // отключаем трей-меню LoadForm(c(‘message’), LD_NONE); // загружаем форму с сообщением об ошибке >else
Вот так, например, добавляются элементы в выпадающее меню:
$mm = new TMenuItem; $mm->caption = t(«menu_9»); // t — это функция мультиязычности, здесь будет написано Выход $mm->loadPicture(«server/system/data/exit.bmp»); // подгружаем иконку $mm->onClick = exitfunc; // функция выполняющая остановку сервера / выход из программы
А вот так удалось решить задачу с определением битности Windows и проверке на наличие установленных компонентов Microsoft Redistributable C++. Битый час я не мог понять, почему в 32 и 64 битных версиях Windows ключи реестра имеют разное значение, а то они и вовсе не там, где предполагалось.
if(getenv(«PROCESSOR_ARCHITEW6432″)==»AMD64» || getenv(«PROCESSOR_ARCHITECTURE»)==»AMD64″)< $output = shell_exec(«REG QUERY HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\»); // запрос в реестр $ret = iconv(‘CP866′,’CP1251′,$output); if (substr_count($ret,»)’)<1) < c(‘trayIcon1’)->enabled = false; LoadForm(c(‘proc’), LD_NONE); // загрузка формы с предложением установить недостающие компоненты > >else< $output = shell_exec(«REG QUERY HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\»); $ret = iconv(‘CP866′,’CP1251′,$output); if (substr_count($ret,»)’)enabled = false; LoadForm(c(‘proc’), LD_NONE); // загрузка формы с предложением установить недостающие компоненты > >
2. Форма просмотра логов
Здесь всё было предельно просто — чтение лог-файла и вывод содержимого в форму, но пришлось пойти на хитрость, чтобы сделать автоматическую установку курсора в конец списка (возможности среды этого не позволяют).
Вот как изначально я обрабатывал переключение табов и установку курсора в конец лога:
$WshShell = new COM(«WScript.Shell»); if (c(«pages1»)->pageIndex == 0) c(«memo1»)->setFocus(); // установка фокуса на текстовое поле elseif (c(«pages1»)->pageIndex == 1) c(«memo2»)->setFocus(); . elseif (c(«pages1»)->pageIndex == 6) c(«memo7»)->setFocus(); $WshShell->SendKeys(«^»); // нажатие клавиши END чтобы попасть в конец $WshShell->SendKeys(«»); // Нажатие клавиши HOME чтобы вернуться в начало последней строки
Как мы видим, были использованы компоненты COM, но по совету одного доброго человека этот код был превращён в следующий:
$ppindex = c(«logs->pages1»)->pageIndex; $obmemo = c(«logs->memo».($ppindex+1)); // определяем активный таб $cnlines = $obmemo->items->lines; // получаем содержимое $seltn = strlen( $obmemo->text ) — strlen($cnlines[ count($cnlines)-1 ]); // определение последней строки $obmemo->setFocus(); $obmemo->selStart = $seltn; // установка курсора в начало строки $obmemo->selLength = 0; // установка длины выделения
3. Форма настроек
Чтение и запись настроек в DevelStudio происходят достаточно просто и очевидно:
ini :: open(«server/system/config.ini»); // открываем файл настроек ini :: read(«main», «lang», $lang); // читаем параметр ini :: write(«main», «lang», c(«settings->combobox1»)->inText); // сохраняем параметр
Но кое с чем пришлось повозиться — это получение списка свободных дисков в системе.
Вот что сперва получилось, это довольно интересно:
$fso = new COM(«Scripting.FileSystemObject»); $disks = array(); foreach($fso->Drives as $disk) $disks[] = $disk->DriveLetter; // получаем массив дисков $diskarr = array(«D»,»E»,»F»,»G»,»H»,»I»,»J»,»K»,»L»,»M»,»N»,»O»,»P»,»Q»,»R»,»S»,»T»,»U»,»V»,»W»,»X»,»Y»,»Z»); $diskar = array(); foreach($diskarr as $fffile) if($fffile == $os_vdisk)<$diskar[] = $fffile;>else // если диск существует, то исключаем его из списка c(«combobox2»)->text = implode(«n»,$diskar); $icounter = 0; foreach($diskar as $fffile) itemIndex = $icounter; $icounter++;>
Здесь снова был использован компонент COM и опять же не обошлось без доброго совета со стороны.
Я подключил DLL библиотеку phposinfo.dll и итоговый код получился таким:
$dliters = array(«A», «B», «C», «D», «E», «F», «G», «H», «I», «J», «K», «L», «M», «N», «O», «P», «Q», «R», «S», «T», «U», «V», «W», «X», «Y», «Z»); $diskar = array(); $icounter = 0; $icount = true; foreach ($dliters as $dliters) // перебираем массив дисков < if ($dliters == $os_vdisk) < $diskar[] = $dliters; $icount = false; >else < if (osinfo_drivetype($dliters . «:») == 1) // функция из phposinfo.dll для получения кода состояния диска < $diskar[] = $dliters; // если ответ единица добавляем букву диска в список свободных if ($icount) $icounter++; >> > c(«combobox2»)->text = implode(«n», $diskar); // добавляем массив дисков в выпадающий список c(«combobox2»)->itemIndex = $icounter; // указываем выбранный пункт списка
4. Функция запуска локального сервера
Это самая объёмная функция, нужно было сделать перезапись конфигурации модулей по шаблонам, запустить виртуальный диск, запустить Apache, Mysql, FTP сервер и написать ещё много всего интересного, однако и тут DevelStudio и форум поддержки среды позволили мне реализовать всё задуманное. Далее несколько интересных моментов…
Были проблемы с определением системного диска и получения пути до HOSTS файла, в итоге всё оказалось легко и просто:
$hostsfile = winLocalPath(CSIDL_WINDOWS) . «/System32/drivers/etc/hosts»;
Запускаем виртуальный диск (здесь используется системная утилита subst.exe, а так же получение локальной директории и пути до системной папки Windows):
Shell_Execute(0, ‘open’, ‘subst.exe’, $os_vdisk . ‘: «‘ . substr(realpath(‘./’), 0, strlen(realpath(‘./’)) — 1) . ‘»‘, strtr(winLocalPath(CSIDL_WINDOWS).’/System32/’,’/’,’\’), 0);
Запуск Apache (функция Shell_Execute позволяет запустить стороннюю программу в фоне и без ожидания ответа):
Shell_Execute(0, ‘open’, ‘os-httpd.exe’, », $realospath . ‘\server\http\’ . $os_httpdriver . ‘\bin\’, $os_window);
Хотелось бы особо отметить, что один из багов DevelStudio — зависания при использовании фоновых процессов в Windows XP. Из-за этого пришлось сделать все процессы не фоновыми и, как следствие, отключать трей-меню на моменты запуска/остановки сервера. Если этого не сделать может показаться что программа зависла, ибо в моменты выполнения real-time процессов элементы управления ни на что не реагируют.
Для создания красивого и одинаково выглядящего во всех версиях Windows трей-меню был использован компонент Skin, а так же один из скинов AlphaSkin, который был мною предварительно отредактирован.
После компиляции на выходе у нас получается обычный исполняемый EXE файл, т.е. собственно сама наша программа. PHP код содержится там в бинарном скомпилированном виде, его дешифровка невозможна, что в принципе позволяет уже сейчас писать платный коммерческий софт. Впрочем преобразование PHP кода в байт-код (используется расширение BCompiler) можно отключить в настройках DevelStudio.
Как видите, с помощью PHP и DevelStudio мне удалось реализовать все поставленные перед собой задачи. Не обошлось без вызова системных утилит и встроенных функций среды разработки. Получилась полноценная Windows программа написанная на языке PHP, точнее даже комплекс программ для организации веб-сервера на локальном компьютере, сейчас проект Open Server живёт и успешно развивается.
Настоящее и будущее DevelStudio
Сейчас DevelStudio базируется на движке PHP 5-ой версии, однако автор ведёт усиленную работу над созданием особой ветки улучшенного PHP — так называемого движка Orion, который будет использоваться в DevelStudio уже со следующей версии. С одной стороны это пугает тем, что больше никаких обновлений от оригинального PHP в самой среде не появиться, кроме того что уже есть в той версии PHP, которая выбрана для разработки Orion. С другой стороны хочется надеяться, что движок Orion преподнесёт нам не мало новых вкусностей, а обещают там очень многое:
Отечественные разработчики Devel Studio, сообщают, что их новая среда разработки уже скоро начнёт работать с собственным скриптовым языком программирования Orion, синтаксис которого будет сочетать популярный PHP + новые конструкции языка.
Также сообщается то, что для Devel Studio почти готов абстрактный игровой движок, который основывается на ZenGL и в него будет подключен Orion. GameAbstract Framework — открытый игровой фреймворк быстрой и удобной разработки 2D-игр на Pascal (Delphi/FreePascal), Orion и на прочих ЯП. Абстракция позволит разработчикам заниматься именно логикой игры, взяв на себя всю остальную рутину.
GameAbstract позволит создавать игры на популярные платформы: Windows, Linux, MacOS (а в будущем и iPhone/iPad). Разработчик будет волен выбрать графический интерфейс: OpenGL, DirectX или OpenGL ES для мобильных систем. Физика будет реализована на основе технологии Chipmunk.
По материалам сайта gcup.ru от 2011-05-23
Заключение
В целом DevelStudio оставила после себя хорошее впечатление, далее мои скромные выводы.
Баги:
— зависание php программы при использовании фоновых процессов в WinXP;
— фоновые процессы не убиваются после отработки (занимают память);
— изменение размеров не вручную, а стрелками больше/меньше приводит к краху;
— нельзя использовать режим отладки и вывод ошибок, иначе изменения не сохраняются;
— без патча не работает упаковщик UPX;
Минусы:
— наличие некоторых багов;
— программы получаются довольно объёмные, но при использовании UPX разница не так велика;
— больший объём занимаемой оперативной памяти, чем аналог на Delphi или С++;
— крайне плохая официальная документация, скудная и устаревшая;
Плюсы:
— простота в освоении и удобство разработки;
— хорошее комьюнити;
— широкие возможности по использованию сторонних библиотек;
— высокая скорость разработки программ;
— наслаждение от написания Windows программ на языке PHP 😉
На мой взгяд, визуальная среда разработки DevelStudio — это очередной шаг к размытию границ между выбором языка разработки программ под Windows. Пишите полезные программы, развивайтесь и не бойтесь экспериментировать!
UP: Откуда в Вас столько ненависти? Это всего лишь очередной способ использования языка PHP. Довольно интересная среда разработки, хотя бы в плане саморазвития. Никто не говорит что нужно бросать всё и садиться писать Windows программы на PHP.
Просто задайте себе вопрос — если бы вы узнали, что ваша машина может не только ездить, но и летать, разве вам это было бы не интересно? Ах да, ведь для полётов есть самолеты, не так ли.
- develstudio
- php
- программирование
- средства разработки
Источник: habr.com
Евгений Степанищев
Пишу, по большей части, про историю, свою жизнь и немного про программирование. Живу в Казани.
DevelStudio
![]() |
Когда-то я программировал на Delphi. Несколько лет и, кажется, даже неплохо. Два диплома, сделанных мною при помощи этой среды люди защитили на «пять». Поэтому, увидев этот скриншот пару дней назад, я бы подумал, что это какие-то ранние прототипы Delphi или что-то самодельное, но сделанное под влиянием.
Это PHP DevelStudio, среда для разработки графических утилит на PHP, сделанная действительно под влиянием Delphi. Визуальное программирование — натаскиваем компонентов, расставляем кнопки, диалоги, окошки, пишем обработчики кликов, нажатий и прочего, компилируем, готов exe-файл. При этом приложение пишется на PHP с использованием специального framework.
Пару дней поковырялся, забавно. Никакой мистики, старый как мир принцип — интерпретатор, библиотеки и прочее складывается в один файл. Отсюда и основной недостаток — даже сжатый UPX’ом (среда сама умеет им сжимать) запускаемый файл примера, который всего-то решает квадратное уравнение, занимает несколько мегабайт и стартует чуть-чуть медленнее, чем хотелось бы.
Тем не менее, авторы сделали гигантскую работу (кстати, DevelStudio написана на PHP) и программировать действительно удобно и просто.
На сайте программы есть справка и видеоуроки (кстати, рекомендую посмотреть видеоуроки, основы воспринимаются очень быстро).
Из-за стартового конского размера, программировать на DevelStudio что-то мелкое как-то расточительно, сказываются накладные расходы, но может это мои комплексы. При увеличении объёма программы они не меняются (если вы не подключаете ещё модули, cURL, скажем), так что логичнее замахнуться на что-то более существенное. Проект молодой (ему несколько месяцев), желаю авторам не потерять запал.
Добавлено на следующий день. Тут в комментариях вспомнили Delphi for PHP и веб-разработку. Ребята, DevelStudio не про то. DevelStudio позволяет получать запускаемые GUI приложения. Никакого веба, никакого Apache и прочего.
Источник: bolknote.ru
PHP DevelStudio 2.0
PHP DevelStudio — наверное настоящая среда программирования, коия дозволяет творить exe програмки на языке PHP либо в отсутствии программирования, с поддержкою разных мастеров. Сейчас програмки разрешено творить на одном из самых узнаваемых и нетяжелых языков программирования PHP, правда правда, на котором сообщают веб-сайты. Для тех, кто ещё никак не может программировать, в среде есть большой комплект мастеров, для генерации кода програмки в автоматическом режиме. Пред новенькими раскрывается вероятность скоро выучиться программированию, а для разработчиков программного обеспечения — большие способности PHP с его огромным численностью расширений для работы с базами этих, архивами, вебом и почти всем иным, и основная вероятность — наверное творение GUI (интерфейса). Способности среды Творение windows программ с GUI интерфейсом (+скины) на языке PHP; Программирование в автоматическом режиме, которое дозволяет неизвестному с программированием человеку строчить програмки; Большущее численность составляющую для сотворения интерфейса и функциональности програмки; Вероятность увеличивать среду утилами, прописанными в лично ведь среде; Служба с базами этих (mysql, mssql и т.д); Служба с архивами, сокетами, вебом и т.д; Многопоточность, вероятность делать код в фоне; Скины для творимых программ; Сделанную програмку разрешено составить в Вотан exe файл, кой никак не станет спрашивать практически никаких добавлений, .NET фреймворков и т.п.
Характеристики
- Размер 11.15 МБ
- Версия 2.0
- Стоимость Бесплатно для Windows
- Разрядность
- Совместимость Windows NT, Windows 2000, Windows XP, Windows 2003, Windows Vista, Windows 7
- Язык Русский
- Дата обновления 21.03.2022
- Разработчик
Похожее
Eclipse IDE 2021-09 R
Android Studio 2021.3.1.16
ActiveState Komodo 12.0.1
Смотрят сейчас
PHP DevelStudio 2.0
SafeInCloud — Password Manager 21.1.6 + keygen
Almeza MultiSet Enterprise last
Источник: 3freesoft.ru