Практический online-курс

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

1

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

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

Почему?

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

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

  1. Вам нужен компромисс между легким синтаксисом и хорошей структурой, которая является PHP, и Вы не будете обеспокоены тем, что нужно будет учить новые языки как ActionScript.
  2. Вы управляете IT в компании с людьми, которые абсолютно неграмотны в вопросе компьютеров, и единственный способ вынудить их использовать хороший браузер для Вашего приложения состоит в том, чтобы включить его в приложение, которое Вы составляете.
  3. Вы хотите избежать оплаты хостинга для Вашего приложения, и Вы предпочитаете, чтобы он хранился у Вас на USB флешке. Вы просто вставляете ее, запускаете и вот оно – Ваше приложение – которое использует тот же SQLite DB, что и раньше.
  4. Вам не нужен доступ к OS API – Вы просто хотите создать браузер для игр, или для работы с приложениями, или еще для чего-то в этом роде. PHP прекрасно подходит, и Вы уже знаете его язык.

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

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 как отдельную программу, которая помогает Вам выполнить поддержку .wxphp файлов, путем простого двойного щелчка.

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

Установка идет с несколькими примерами, включая тот, который инициализирует веб-представление и загружает 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, что означает, что он не будет спешить начинать работу, но он поддерживает последние веб-технологии.

Сердце TideSDK – это объектный мост, собранный в компонент WebKit. Мост позволяет другим языкам сценариев – python, php или ruby – работать на HTML странице, используя признаки подлинника в DOM, точно так же, как JavaScript. Вы можете непосредственно вызывать .py, .rb или .php файлы из Вашего приложения.

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

#appname:HelloWorld
#appid:com.tidesdk.helloworld
#publisher:Software in the Public Interest (SPI) Inc
#image:default_app_logo.png
#url:http//tidesdk.org
#guid:845e9c3c-c9ff-4ad4-afdf-9638092f044f
#desc:Sample Hello World application
#type:desktop
runtime:1.3.1-beta
app:1.3.1-beta
codec:1.3.1-beta
database:1.3.1-beta
filesystem:1.3.1-beta
media:1.3.1-beta
monkey:1.3.1-beta
network:1.3.1-beta
platform:1.3.1-beta
process:1.3.1-beta
ui:1.3.1-beta
worker:1.3.1-beta
php:1.3.1-beta

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

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

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

  • Процесс разработки PHP допускает баги, и практически нет возможности вводить исправления.
  • Объединенная PHP версия ужасно устарела – до сегодняшнего дня версия 5.3.X. В то же время относительно просто заменить ее обновленной версией через папку /modules в инсталляционном каталоги, это – дополнительная неприятность и недостаток многих современных функций PHP, которые могли бы пригодиться в настольной разработке приложений, не говоря уже о встроенном сервере, который, также, мог бы здесь получить тайный способ использования.
  • Есть кривая обучения. DOM API – это нечто отличное, к чему Вы могли уже привыкнуть в разработке. Чтобы отразить что-либо на мониторе, Вам может скорее понадобится вызов $document->write(), чем echo. Это незначительные различия, но может сбить Вас с толку.
  • Безусловно, самый большой минус – это компиляция. Пакет, который Вы получаете, строя приложение, связан с платформой. Чтобы построить приложение для различной окружающей среды, у Вас должна БЫТЬ эта различная окружающая среда. Неравенство Windows/Linux легко решается виртуальными машинами (хотя все легче решить, если Ваш хост – Windows, и у Вас есть Linux VMs, чем наоборот).

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

Другие опции

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

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

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

Вывод

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

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

Высоких конверсий!

28-03-2016

LPgenerator — профессиональная Landing Page платформа для увеличения продаж вашего бизнеса

  • Более 500 шаблонов в галерее
  • Инструменты оптимизации конверсии
  • Статистика и сквозная аналитика
  • CRM для работы с заявками и телефония
  • Визуальный редактор с расширенным функционалом
  • Быстрая техническая поддержка
  • Множество интеграций
  • Окупаемость инструмента — от 7 дней
blog comments powered by Disqus
copyright © 2011–2017 by LPgenerator LLC. Все права защищены
Запрещено любое копирование материалов ресурса без письменного согласия владельца — ООО "ЛПгенератор".
MASK.setDomain('//static.lpgenerator.ru/media/');