gabrielrcouto/php-gui

无扩展的PHP图形用户界面库

v0.1.1 2019-01-18 15:07 UTC

This package is auto-updated.

Last update: 2024-08-29 04:14:34 UTC


README

php-gui

无扩展的PHP图形用户界面库

made with PHP S2

Build Status Latest Stable Version Software License Packagist

目录

为什么

PHP不仅仅是“网络语言”,它是一种快速的语言,具有跨平台解释器和良好的命令行界面。GUI是完成这个生态系统的一个自然步骤。

多年来,许多GUI项目一直在为PHP开发,如PHP-GTKPHP-QTwxPHP等,但它们都没有流行起来。

本项目旨在解决现有“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等)具有很大的优势。

LCL graph, showing that LCL will use an interface for building the GUI according to the operation system

它没有任何依赖项(除了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

待办事项

此仓库的“问题”页面用于待办事项管理,只需搜索“待办”标签。

致谢

@gabrielrcouto

@reisraff

许可证

麻省理工学院许可证

Sponsor