десктопное приложение на php

3 Ways to Develop Cross Platform Desktop Apps with PHP

Free JavaScript Book!

Write powerful, clean and maintainable JavaScript.

PHP as a cross-platform desktop app development language? Blasphemy! Nonetheless, it’s possible.

A few years ago, everything those interested in bringing PHP to the desktop had had was the now long abandoned GTK PHP. Since then, new players have appeared, though let’s first answer the “why”.

десктопное приложение на php. 1417196190Whyyyy 461298 679209. десктопное приложение на php фото. десктопное приложение на php-1417196190Whyyyy 461298 679209. картинка десктопное приложение на php. картинка 1417196190Whyyyy 461298 679209.

Why would anyone develop cross platform PHP apps for the desktop? Why not opt for something that can actually tie into the low level APIs of the operating system, like Adobe AIR? Why not go with something outdated and bloated but reliable, like Java? Why not make it a Chrome app and if you need native support, use Native Client? Hell, if you want a scripting language, why not just go with Python? Everything goes, as long as we avoid having to bundle a server with the whole shebang, right?

Off the top of my head, I can think of several far fetched scenarios:

These scenarios might look like grasping at straws, and indeed, I really can’t think of a REAL, practical reason to want to do it that doesn’t have a viable alternative. Still, it’s nice to know it’s possible. Let’s see how.

1. Nightrain

Nightrain is a pre-packaged set of PHP-hosting prerequisites powered by PHP 5.5.x at the moment. It’s a packager written in Python that uses PHP’s internal server to host your app, thus avoiding Apache and Nginx and minimizing configuration shenanigans. However, this also means some more advanced aspects are unavailable, and you can only really use it for very rudimentary apps.

Another big con is that on Windows, a command prompt is launched first, and then the “app”. The command windows must stay open if you want to use the app, and this might be more than a little confusing to the technically illiterate people of scenario 2) above.

десктопное приложение на php. 141719621101. десктопное приложение на php фото. десктопное приложение на php-141719621101. картинка десктопное приложение на php. картинка 141719621101.

Nightrain is compatible with most PHP apps/frameworks out of the box, as long as you change the database to SQLite, which is what’s used, and tweak the bundled php.ini for some missing extensions, if any. MySQL is not bundled and installing it alongside the regular stack is no simple matter. It’s very simple to make the app send the SQLite data upstream to a server you use for a centralized database anyway, so using only SQLite on the system where the app is running is somewhat logical.

By far the biggest drawback of the app is that it uses WX widgets to power the headless browser, and on Windows, this seems to come down to IE7. Changing it seems possible, by means of WXPython as mentioned in the issue linked above, but hasn’t yet been attempted. One can only hope the browser object will be updated to something more usable some time soon – until then, and until all the other critical drawbacks are fixed, I can’t even begin to imagine a use for Nightrain.

2. WXPHP

wxPHP stands for “wxWidgets for PHP” and is a PHP extension that wraps the wxWidgets library, which allows to write multi-platform desktop applications that make use of the native graphical components available to the different platforms. – Wikipedia

десктопное приложение на php. 141719622901. десктопное приложение на php фото. десктопное приложение на php-141719622901. картинка десктопное приложение на php. картинка 141719622901.

wxPHP also comes with an adorable form building tool which will help you automatically generate the PHP code you need for your wxPHP apps by means of a wysiwyg editor.

десктопное приложение на php. 141719624402. десктопное приложение на php фото. десктопное приложение на php-141719624402. картинка десктопное приложение на php. картинка 141719624402.

десктопное приложение на php. 141719625403. десктопное приложение на php фото. десктопное приложение на php-141719625403. картинка десктопное приложение на php. картинка 141719625403.

Before you dismiss wx as trivial, people have developed more than basic apps in it. For example, here’s a PHP Editor with remote debugging and a plugin API.

If you’re serious about PHP desktop development, wxPHP is by far the better option when compared to Nightrain, even though Nightrain lets you write good old HTML for GUI.

3. TideSDK

TideSDK has a somewhat different approach than the above two. You install an SDK to be able to develop applications, and each platform has certain prerequisites. TideSDK is actually the renamed Titanium Desktop project. Titanium remained focused on mobile, and abandoned the desktop version, which was taken over by some people who have open sourced it and dubbed it TideSDK.

Once installed as per the Getting Started guide, and once we have the TideSDK Developer app (a helper application which will guide us in bundling our application into a distributable package), we can get started developing. Apps you build with Tide (via the helper app, or via the command line) will be both distributable as purely executable, or can be distributed as installable packages which get the whole “app” treatment, including an installation procedure embedded, making them uninstallable via Add/Remove Programs on Windows or your package managers on other operating systems.

Applications resources are used in conjunction with a WebKit client and a familiar and extensive API. The API is privileged, providing filesystem access that allows you to read and manage files. APIs are also provided to create and interact with a local database. Network API allows to create clients and servers or to interface with HTTP at a much lower level. It is also possible to open socket connections to other services.

Generally, TideSDK uses HTML, CSS and JS to render applications, but it supports scripted languages like Python, Ruby and PHP as well. The engine behind the rendering is WebKit which means it’ll be somewhat slow to start, but it’ll support the latest web technologies.

PHP is activated by adding a module statement to the manifest file, like so:

Note that using the script modules for scripting languages will incur significant performance penalties on the installation and runtime of your app(s).

Interestingly, TideSDK features an object bridge which lets you, when using PHP in your apps, convert data seamlessly from JS to PHP and back. You can read more here, but a detailed TideSDK tutorial is coming soon.

There are several major downsides to using TideSDK for PHP desktop app development:

TideSDK is a neat option, but it’s far from usable. It’ll do great for HTML/CSS/JS delivery, but when it comes to PHP, I believe wxPHP is still your best bet.

Other options

There are other options available too, but they’re underwhelming to say the least.

PHPDesktop is similar to Nightrain, but is Windows only. On the other hand, it comes bundled with the Mongoose server and can thus execute parallel requests. It also runs Chrome, which means it’s slow to render/open but supports the latest web technologies. Its Windows-exclusivity disqualifies it from this list of multi-platform solutions, though.

Webinder and PHP GTK are both severely outdated and probably shouldn’t be used. In addition to that, Webinder is Windows-only.

Conclusion

While the reasons for building PHP apps for the desktop vary from use case to use case and often aren’t easy to justify, I believe it’s good to know the option is there, should you ever need it.

Have you developed desktop apps in PHP? If so, please, please let me know why and which tech you’ve used – I would absolutely love to have you write about your experiences. Know of any other options? Let me know in the comments!

Источник

Десктопное PHP-приложение Windows

Статья написана для Windows, но актуальна и для Linux, достаточно установить PHP, выполнить в терминале команду из папки приложения и всё будет работать, для Windows достаточно кликнуть один ярлык.

Вы сразу спросите почему PHP, почему не Electron или Python, да все потому что нет времени изобретать что-то новое, если логика уже реализована в админке сайта например, или же уже сформирована достаточная кодовая база на PHP, если нужно разработать новое приложение, тогда да, можно его писать на чем-то с нуля, но тут просто скопировал, вставил, запаковал в архив и пользуйся.

Графическим интерфейсом для проекта будет тот же веб-сервер, достаточно в bat-скрипте после запуска сервера вписать открытие например localhost:10000 и готово. В идеале можно взять портативный браузер, сконфигурировать его правильным образом и запускать с правильными параметрами, чтобы не было никаких панелей, только окно сайта, но об этом позже вероятно расскажу.

В качестве веб-сервера будет использоваться тот, что встроен в PHP, ради однопользовательского приложения можно не ставить Apache или Nginx.

В качестве хранилища данных можно использовать файлы или SQLite, это по сути тот же MySQL, только чуть проще и не нужно отдельный сервер запускать, приложение просто дергает файл и оперирует данными из него.

Итак, начнем, создаем папку, например, WebTool, в этой папке создадим папку BIN и положим туда распакованный PHP для Windows, в моем случае это 7.4.10

десктопное приложение на php. . десктопное приложение на php фото. десктопное приложение на php-. картинка десктопное приложение на php. картинка .

Внутри WebTool, рядом с BIN создадим APP, там будет наше веб-приложение..

десктопное приложение на php. 1. десктопное приложение на php фото. десктопное приложение на php-1. картинка десктопное приложение на php. картинка 1.

Назовем его server.php и положим в папку BIN

десктопное приложение на php. 2. десктопное приложение на php фото. десктопное приложение на php-2. картинка десктопное приложение на php. картинка 2.BIN/server.php

А в папку APP положим пока просто файл run.php c текстом типа

десктопное приложение на php. 3. десктопное приложение на php фото. десктопное приложение на php-3. картинка десктопное приложение на php. картинка 3.

Теперь первый тестовый запуск, в папку WebTool создадим файл start.bat

С таким содержимым важно путь до PHP правильный

Достаточно будет кликнуть по start.bat и у нас откроется наше веб-приложение в браузере, а перед этим запустится сервер, тут нужно будет доработать, чтобы он дважды не запускался, но это потом. Дважды он итак не запускается, при втором запуске строчка с php не выполняется, выдает ошибку, а строчка с открытием странички в браузере срабатывает.

Если все правильно, то в браузере увидим примерно такую старничку

десктопное приложение на php. 4. десктопное приложение на php фото. десктопное приложение на php-4. картинка десктопное приложение на php. картинка 4.

Дальше нам нужно привести в порядок php.ini, копируем внутри папки BIN/php-xxxx/ файл php.ini-development переименовываем копию в php.ini

Наводим порядки в файле, можно удалить всё лишнее, все равно это можно достать из оригинального файла из которого скопировали, у меня получилось типа такого:

Перезапускаем сервер, дальше делаем этакое приложение, сразу скажу, у меня с прошлой работы очень много наработок завалялось, из этого начнем лепить приложение, итак, что нам нужно?

1. Парсер URL для подгрузки нужных модулей

2. Система работы с модулями, систему контроля доступа можно упустить.

3. Базовая библиотека с обертками для выполнения типовых операций и работы системы.

4. Простенький шаблонизатор, чтоб не мешать логику и представление.

5. Контроллер для модулей.

6. UI-библиотека, состоящая из php+css+js, чтобы в пару строчек слепить форму.

7. Всякие классы типа для работы с БД.

Можно по идее взять готовый фреймворк, но я обойдусь несколькими файлами.

Сверху есть ссылка поддержать проект, если вдруг захотите.

База данных Oracle дома

Некоторые люди, как я, впервые сталкиваются с БД Oracle на работе, после MySQL вроде-бы всё понятно, но разница есть и во многом, я решил поставить себе Oracle дома, чтобы практиковаться в нерабочее время.…

PoweShell превращение xml в sql

Добавить код в Notepad++Write-Host ‘Вставляйте XML строчки, важно, без пустых строк,…

Источник

3 способа разработать кросс-платформенное настольное приложение на PHP

десктопное приложение на php. 1. десктопное приложение на php фото. десктопное приложение на php-1. картинка десктопное приложение на php. картинка 1.

PHP – кросс-платформенный язык разработки приложений? Да!

Несколько лет назад, все было направлено на то, чтобы сделать PHP десктопным и пришлось отказать от GTK PHP. С тех времен уже появились новые игроки, но сначала давайте ответим на вопрос «почему?».

Почему?

Почему решили разработать кросс-платформенное приложение PHP для десктопных устройств? Почему бы не подстроиться под нечто, что может иметь отношение к API низкого уровня операционной системы, наподобие Adobe AIR? Почему бы не работать с чем-то немного устаревшим, но надежным, как Java? Почему бы не сделать приложение Chrome, а если Вам нужна нативная поддержка, то почему бы не использовать Native Client? Если Вам нужен язык написания сценариев, то почему бы просто не использовать Python?

Первое, что приходит на ум, это несколько неправдоподобных сценариев:

Эти сценарии могут выглядеть как соломинки, за которые мы пытаемся ухватиться, а на самом деле, мы не можем придумать ни одной реальной причины для того, чтобы захотеть делать то, что не имеет жизнеспособной альтернативы. Давайте посмотрим как.

Nightrain

Nightrain – это предварительно упакованный набор необходимых систем и практик PHP-хостинга работающий на сегодняшний день на PHP 5.5.x. это упаковщик написанный Python, который использует внутренний сервер PHP для принятия Вашего приложения, что позволяет обойти стороной Apache и Nginx и минимизировать ненужные конфигурации. Однако, это также означает, что многие более продвинутые аспекты не будут работать и Вам придется использовать только самые примитивные приложения.

Еще один большой довод «против», что на Windows сначала запускается командная строка и только потом приложение. Если Вы хотите использовать приложение, то нужно чтобы командные окна оставались открытыми, и это может немного сбивать с толку технически неподкованных людей из второго сценария.

Более того, Вы можете запустить только одно приложение nightrain по умолчанию, так как он запускает сервер в порту 8000 и потом браузер открывает «секретный» визит localhost:8000. Если Вы хотите запустить сразу несколько различных приложений, Вам нужно сменить порт в settings.ini. Это, также, означает, что простой визит localhost:8000 в браузере Вашей хост машины покажет Вам то же приложение.

Nightrain совместим с большинством приложений/фреймворков PHP в случае, если Вы измените базу данных на SQLite, которая используется и настраивает объединенный в пакет php.ini для некоторых недостающих разрешений. MySQL не объединен в пакет и не установка обычного стека не является такой уж простой задачей. Очень просто отправить данные SQLite прямиком на сервер, который Вы используете для того, чтобы как-то централизовать базу данных и поэтому использование SQLite в системе, где работает приложение, представляется чем-то логичным.

Безусловно, самый большой недостаток приложения состоит в том, что оно использует виджеты WX, чтобы привести браузер в действие, и на Windows, это, кажется, сводится к IE7. Это изменение кажется возможным, посредством WXPython, как упомянуто выше, но такое еще не было предпринято. Можно только надеяться, что объект браузера скоро будет обновлен на что-то более применимое – а до тех пор, пока все другие критические недостатки не будут исправлены, сложно даже представить, как можно использовать Nightrain.

WXPHP

wxPHP означает “wxWidgets для PHP” и является расширением PHP, которое охватывает библиотеку wxWidgets, которая позволяет писать мульти платформенные настольные приложения, использующая нативные графические компоненты, подходящие для различных платформ. – Википедия.

Установка идет с несколькими примерами, включая тот, который инициализирует веб-представление и загружает wxPHP веб-сайт в структуре wx. Одна вещь, которую стоит отметить – с wxPHP Вы не развиваете веб-сайты, как будто Вы в сети. Другими словами, Вы не развиваете офлайновые веб-сайты, но связываете вместе различные wx виджеты. Также, у библиотеки есть что-то вроде кривой обучения, и Вам будет не хватать возможностей HTML5, к которым Вы могли привыкнуть. Есть некоторое Доказательство Понятия внутреннего управления сервера PHP и обслуживания запросов, но это пока на уровне эксперимента и немного сложно, и еще раз представляет localhost, как Nightrain.

wxPHP сопровождается прекрасными инструментами строительства формы, которая поможет Вам автоматически генерировать код PHP, который необходим для приложений wxPHP посредством редактора wysiwyg.

До того, как Вы решите, что wx слишком тривиален, некоторые уже разработали в нем более чем базовые приложения. Например, есть редактор PHP Editor с отладкой на другой платформе и встроенным API.

Если Вы серьезно относитесь к настольному развитию PHP, wxPHP – безусловно, лучший выбор, по сравнению с Nightrain, даже если учитывать, что Nightrain позволяет Вам написать старый добрый HTML для GUI.

Одно из самых больших преимуществ wx – тот факт, что установленными однажды wxphp файлами можно управлять по щелчку мыши. Нет дополнительных установок, никаких неловких консолей. Для технически неграмотных людей это – находка – Вы можете легко распространить приложение в своей компании через обычную электронную почту, и процедура обновления так же проста, как переписывание файла.

TideSDK

TideSDK имеет несколько иной подход нежели первые два примера. Для того, чтобы разработать приложения, Вы устанавливаете SDK, а каждая платформа имеет свои необходимые системы и практики. TideSDK по сути является переименованным проектом Titanium Desktop. Titanium остается сосредоточенным на мобильном устройстве и оставил настольную версию, однако, был принят некоторыми людьми, которые сделали из него открытый источник и назвали TideSDK.

После того, как мы установили его согласно гиду, и как только у нас есть разработчик приложений TideSDK, можем начать разработку. Приложения, которые Вы строите с помощью Tide (через приложение помощника, или через командную строку) можно будет легко распространить и чисто выполнить, или могут быть распределены как устанавливаемые пакеты, которые получают статус “приложения”, включая внедренный процесс установки, который делает невозможным установку через Добавить/Удалить Программы на Windows или через Ваши диспетчеры пакетов на других операционных системах.

Дополнительные ресурсы используются совместно с клиентом WebKit и знакомым и обширным API. API предпочтительнее, так как, обеспечивает доступ файловой системы, который позволяет Вам читать и управлять файлами. API также позволяют создавать и взаимодействовать с местной базой данных. Сетевой API позволяет создавать клиент-серверы или взаимодействовать с HTTP на намного более низком уровне. Также есть возможность открытия сокет связи с другими сервисами.

Обычно TideSDK использует HTML, CSS и JS, для того, чтобы представить приложение, но он поддерживает подготовленные языки как Python, Ruby и PHP. Движок после предоставления WebKit, что означает, что он не будет спешить начинать работу, но он поддерживает последние веб-технологии.

PHP активируется путем добавления официального модуля файла манифеста, примерно так:

Обратите внимание на то, что использование скипт модулей для языков сценариев приведет к значительным потерям при инсталляции и во времени запуска вашего приложения.

Интересно то, что возможности TideSDK выступают в роли моста, который позволяет Вам, при использовании PHP в приложении, незаметно конвертируют данные из JS в PHP и наоборот. Здесь можно почитать об этом более подробно, но обучающее видео будет позже.

Есть два основных минуса в использовании TideSDK для разработки настольных PHP приложений:

TideSDK – это отличная опция, но очень далека от того, чтобы быть юзабельной. Он отлично работает для доставки HTML/CSS/JS, но когда дело доходит до PHP, все же wxPHP – лучший выбор.

Другие опции

Есть еще опции, о которых хорошо было бы упомянуть, но они, все-таки, посредственные.

– PHPDesktop подобен Nightrain, но только на Windows. Но с другой стороны, он связан с сервером Mongoose, и поэтому может выполнять параллельные запросы. Он также работает на Chrome, что означает, что он медленно открывает/отдает, но поддерживает последние веб-технологии. Привязанность в Windows исключает мульти-платформенность.

– Webinder и PHP GTK очень давно не обновлялись и могут быть использованы скорее как дополнение. В добавок Webinder работает только на Windows

Вывод

Несмотря на то, что создание PHP приложений для декстопа отличается от примера использования для примера использования и часто их не просто настраивать, мы считаем, что необходимо знать о возможностях, которые Вы когда-либо можете использовать.

Если Вы уже имели опыт создания подобных приложений, пожалуйста, поделитесь им с нами в комментариях – нам будет очень интересно. А если Вам известно о других опциях, будем рады, если Вы нам о них расскажете.

Источник

Создание GUI приложений на PHP

десктопное приложение на php. image loader. десктопное приложение на php фото. десктопное приложение на php-image loader. картинка десктопное приложение на php. картинка image loader.
Темой о разработке GUI приложений на PHP сегодня, пожалуй, уже никого не удивишь. Для этого существует не одно решение, есть как развивающиеся проекты, так и умершие. Но этот пост будет не о тех и не о других, а о новом расширении для PHP — библиотеке PHPQt5, а точнее о её более продвинутой реинкарнации — о PQEngine.

P.S. PHPQt5 не имеет ничего общего с более известной библиотекой php-qt!

Предисловие

По сути, PQEngine — это SAPI модуль, но позиционируется он как движок, реализующий интерфейс для исполнения php-скриптов при помощи Zend API и предоставляющий доступ к части фреймворка Qt.
Пока, к сожалению, к очень малой его части. Можно выделить основные из них: визуальные компоненты Qt (Widgets), компоновщики (Layouts), система соединений сигнал->слот (connect()), управление событиями (QEvents) и многопоточность, предоставляемая классом QThread.

Создание проекта

Для упрощения создания и сборки проектов существует очень простая в использовании утилита — PQBuilder. Это приложение на 99% написано на PHP и демонстрирует скромные возможности движка PQEngine.
Скачать утилиту можно на официальном сайте библиотеки PHPQt5: http://phpqt.ru/download/pqbuilder

Интерфейс сборщика проектов:
десктопное приложение на php. image loader. десктопное приложение на php фото. десктопное приложение на php-image loader. картинка десктопное приложение на php. картинка image loader.

Код который мы видим на скриншоте был скопирован из шаблона и при выполнении покажет пустую форму.

На самом деле для запуска формы совсем необязательно наследоваться от QWidget, предлагаемый код — это лишь пример. Единственный обязательный участок кода тут — qApp::exec();, где qApp — это ссылка на экземпляр класса QApplication, а функция exec() обеспечивает переход в главный цикл обработки событий Qt, тем самым предотвращая завершение работы PHP до тех пор, пока не будет вызвана функция exit() или quit(), либо пока не будут закрыты все видимые формы приложения.

Самый элементарный способ показать форму Qt выглядит примерно так:

Для своего проекта я выбрал шаблон Simple — он очень удобен на этапе разработки в плане того, что для дебага проекта не придётся каждый раз пересобирать приложение.

Нажав на кнопку сборки проекта, PQBuilder запустит компилятор, работа которого продлится от 10 до 30 секунд, затем откроется директория собранного проекта и, если процесс компиляции прошел успешно, мы увидим свежеиспеченный исполняемый файл.

Для релиза приложения нам нужны только 4 файла: exe-файл, pqengine.dll, php5ts.dll и main.php. Остальные файлы в директории проекта — это временные файлы созданные компилятором, их можно смело удалить.

Разработка приложения

Благодаря тому, что все зарегистрированные в движке PQEngine классы реализуют интерфейсы стандартных классов Qt, движок, теоретически, способен проглотить часть примеров с официальной документации Qt, достаточно лишь убрать типы переменных и подписать к ним знак $. Но тем не менее, некоторые функции остаются недоступными, либо отличаются набором и типами входных и выходных значений.

Посмотреть полный список методов того или иного класса можно в заголовочных файлах PQEngine, находятся они в директории с установленным сборщиком:
%путь_установки%\PQBuilder\pqenginedll\pqclasses
Все методы начинающиеся с макроса Q_INVOKABLE доступны для вызова из PHP-кода, а выполняют они ровно то, что написано в официальной документации Qt.

Теперь для того чтобы посмотреть результат совершенно необязательно снова пересобирать проект.
Просто сохраняем исходный код и запускаем исполняемый exe-файл, который был скомпилирован ранее.

И вот что должно было получиться:
десктопное приложение на php. image loader. десктопное приложение на php фото. десктопное приложение на php-image loader. картинка десктопное приложение на php. картинка image loader.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *