gabrielrcouto / php-gui
无扩展的PHP图形用户界面库
Requires
- php: >=5.6
- react/child-process: ^0.4.0
Requires (Dev)
- evert/phpdoc-md: ~0.2.0
- phing/phing: 2.*
- phpdocumentor/phpdocumentor: ^2.8
- phpunit/phpunit: ^4.8.35
- squizlabs/php_codesniffer: 2.0.*@dev
This package is auto-updated.
Last update: 2024-08-29 04:14:34 UTC
README
无扩展的PHP图形用户界面库
目录
为什么
PHP不仅仅是“网络语言”,它是一种快速的语言,具有跨平台解释器和良好的命令行界面。GUI是完成这个生态系统的一个自然步骤。
多年来,许多GUI项目一直在为PHP开发,如PHP-GTK、PHP-QT、wxPHP等,但它们都没有流行起来。
本项目旨在解决现有“GUI项目”中存在的最常见问题
- 需要安装扩展
- 跨平台
- 无外部依赖
- 易于安装(composer require php-gui)/易于使用($button = new Button)
需求
支持的PHP版本
- PHP 5.6
- PHP 7
- HHVM
以及操作系统
- Linux x64
- Windows x64
- Mac OSX(已测试在10.10.x和10.11.x上)
使用方法
使用composer下载库
稳定版本
$ composer require gabrielrcouto/php-gui
最新版本(开发版)
$ composer require gabrielrcouto/php-gui:dev-master
现在,你可以构建一个GUI应用程序。让我们来做Hello World!
创建文件'myapp.php'
<?php require 'vendor/autoload.php'; use Gui\Application; use Gui\Components\Button; $application = new Application(); $application->on('start', function() use ($application) { $button = (new Button()) ->setLeft(40) ->setTop(100) ->setWidth(200) ->setValue('Look, I\'m a button!'); $button->on('click', function() use ($button) { $button->setValue('Look, I\'m a clicked button!'); }); }); $application->run();
现在,运行它
php myapp.php
简单吗?👏 你不需要编译任何东西,只需通过composer下载库即可!😄
文档
我们有一个文档页面
但是,如果你想看看一些示例,请按照以下说明操作。
# clone the repository git clone https://github.com/gabrielrcouto/php-gui.git cd php-gui # install dependencies composer install # run examples php examples/01-basic/example.php php examples/02-animation/example.php php examples/03-window/example.php php examples/04-multiple-windows/example.php php examples/05-canvas/example.php php examples/06-ping/example.php php examples/07-php-internals/example.php php examples/08-alert/example.php php examples/09-3d-perspective/example.php
工作原理
为了无需扩展即可创建GUI,PHP通过proc_open执行一个二进制文件,并使用Stdin/Stdout管道与之通信——这是一个快速且跨平台的解决方案。
PHP <=> Stdin/Stdout管道 <=> Lazarus应用程序 <=> GUI
该二进制文件使用Lazarus(Free Pascal)创建。经过大量研究,我发现使用Lazarus比其他桌面语言(如C#、Java等)具有很大的优势。
它没有任何依赖项(除了Linux需要GTK外),拥有良好的组件库,是编译的、开源的,并且有一个很好的口号(一次编写,到处编译)。
PHP与Lazarus之间的通信(IPC)使用基于JSON RPC的协议进行。您可以在这里查看规范。
贡献指南
组件名称
为了成为一个易于使用的库,本项目将使用HTML友好的组件名称,因为PHP开发者对此更熟悉。
示例
- 在Lazarus中,属性“caption”用于按钮的文本。在php-gui中,属性名称是“value”。
- 在Lazarus中,“Edit”是文本输入的组件,在php-gui中,它是“InputText”。
编译Lazarus应用程序
在您的本地计算机上
首先,您需要安装Lazarus。
编译lazarus二进制文件
lazbuild phpgui.lpr
使用Docker
如果您正在生成Linux二进制文件,可以使用Docker
lazarus/linux-docker.sh
cd lazarus/
lazbuild phpgui.lpr
测试
首先安装依赖项,然后您可以运行
bin/phing
待办事项
此仓库的“问题”页面用于待办事项管理,只需搜索“待办”标签。