Комментарии 20
У gtk есть менее многословные биндинги. Оно конечно занимательно, но вот реальных desktop-проектов на php я не встречал. Есть какие-нибудь интересные примеры? Гугление showcases выдает какие-то калькуляторы…
Существует RAD-среда DevelNext, в которой десктопные программы пишутся на JPHP — аналоге PHP, компилируемом в байт-код для JVM. UI построен на JavaFX. Есть возможность писать свои расширения на Java — к примеру, я реализовал в несколько строк подхват сторонних DLLок через JNA. К сожалению, автор компилятора и среды позиционирует свой продукт, как решение для начинающих программистов, поэтому вместо нормального редактора файлов проекта, предпочтение отдаётся всевозможным drag&drop конструкторам. Вероятно, со временем это изменится.
Скриншот

В далёком 2011 делал вот такое чудище на php:
В паблике этой программы нет. Из более свежего есть вот такое:
Думаю на пхп мало программ из-за того, что до сих пор популярен этот стереотип о непригодности PHP ни для чего, кроме как для «сайтиков». Приложения делают на HTML+js и никого не смущает что это все рисуется в браузере, но вот фраза «писать гуй на пыхе» почему то вызывает у многих недоумение. Мне это не понятно. От части свою роль играет факт отсутствия нормальной GUI библиотеки. Не будешь же для каждого приложения на пхп писать расширение с привязкой к сишному gtk.
Скриншот
http://wxmaper.ru/images/kvvkdb-0-3.png
В паблике этой программы нет. Из более свежего есть вот такое:
Еще скриншот
https://pp.vk.me/c637623/v637623446/fbe1/GyGXf2tCmQ4.jpg
Думаю на пхп мало программ из-за того, что до сих пор популярен этот стереотип о непригодности PHP ни для чего, кроме как для «сайтиков». Приложения делают на HTML+js и никого не смущает что это все рисуется в браузере, но вот фраза «писать гуй на пыхе» почему то вызывает у многих недоумение. Мне это не понятно. От части свою роль играет факт отсутствия нормальной GUI библиотеки. Не будешь же для каждого приложения на пхп писать расширение с привязкой к сишному gtk.
Первая программа случайно не на PHP Devel Studio написана? Иконка очень напоминает логотип Soul Engine.
Второй скрин очень симпатичен. Я не предубежденный противник php, я на нем по работе иногда пишу. Сайты, да. А десктопные gui я писал много на чем, но не на php, сложилось впечатление, что нормальных либ толком нет.
Думаю php привычен для сайтов в большей степени ровно из-за всяких $_SERVER, $_POST и иже с ними.
Думаю php привычен для сайтов в большей степени ровно из-за всяких $_SERVER, $_POST и иже с ними.
Библиотека неплохая, вот только поддерживаеться только за денежку. Пару раз наступил на баги или отсутсвие функциональности (например отсуствие возможности устанавливать статические переменные) и никакого ответа от разроботчиков…
В смысле устанавливать статические переменные? как параметры класса?
например отсуствие возможности устанавливать статические переменные
так вы попробуйте в документацию заглянуть.
#include <phpcpp.h>
class YourCustomClass : public Php::Base {};
extern "C" {
PHPCPP_EXPORT void *get_module() {
static Php::Extension ext("YourCustomExtention", "1.0");
Php::Class<YourCustomClass> cl("YourCustomClass");
cl.property<YourCustomClass>("staticProperty", std::nullptr, Php::Static);
ext.add(std::move(gtk));
return ext;
}
}
<?php
class YourCustomClass {
static $staticProperty = null;
}
Это вы задекларировали, а попробуйте поменять это значение в какомто методе…
Не сразу увидел ваше дополнение. Да, кажется, доступ к статическим полям не реализован. Его, кстати, не так уж и сложно реализовать. Я примерно представляю как это можно сделать. Просто это никому не было нужно.
Что касается вашего примера, то у вас статическое поле торчит наружу. Это не очень хорошо с точки зрения архитектуры. И, возможно, требуется рефакторинг. Попробуйте в вашем примере заменить
А вообще, опишите исходную задачу, попробую накидать решение.
В настоящий момент в библиотеке есть практически все для решения основных задач, возникающих при написании расширений.
Что касается вашего примера, то у вас статическое поле торчит наружу. Это не очень хорошо с точки зрения архитектуры. И, возможно, требуется рефакторинг. Попробуйте в вашем примере заменить
static $a
на private static $a
и проблема сразу исчезнет.А вообще, опишите исходную задачу, попробую накидать решение.
В настоящий момент в библиотеке есть практически все для решения основных задач, возникающих при написании расширений.
оффтопик
Правильно ли я понимаю, что когда выводят графику на десктопе на многих других языках программирования, например, на pyton, по сути используют такие же библиотеки и методы? То есть это универсальные методы, несколько отличается только реализация для разных языков?
Правильно ли я понимаю, что когда выводят графику на десктопе на многих других языках программирования, например, на pyton, по сути используют такие же библиотеки и методы? То есть это универсальные методы, несколько отличается только реализация для разных языков?
Если обобщить вообще для всех языков, 99% процентов внешнего взаимодействия прикладных программ осуществляется посредством вызова syscall's — «универсальных методов», реализуемых самой операционной системой =) касательно графики, да — везде используются одни и те же исполнители — графические драйвера
Hellow? Really?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пишем расширение с помощью библиотеки php-cpp для php7