PHP GUI探索

PHP GUI探索_第1张图片
图片来自小熊蛋的收藏

工作需要,所以从php GUI开始。

GUI简介

官方简介:这个扩展包让libui为跨平台开发原生的外观和感觉用户界面提供了一个面向对象的API。

我这个翻译确实有点儿尬,反正不是重点。

重点是这个GUI库仅支持PHP7哦

据说呢,这个UI原先是一个牛人andlabs用C写的libui 给他的Go UI 界面库用的,后来被PHP引用了。


PHP GUI探索_第2张图片
来自知乎@Scott Huang

我来试着搞定这个东西,莱茨狗~

GUI 安装/配置

我开发用的php版本是php7.0.17 NTS


祈祷它能正常的运行

先不看官方文档,但是mark一下:https://secure.php.net/manual/zh/book.ui.php

找了一年前一位前辈的帖子起手,他把压缩包附带的几个游戏放在github了,有兴趣可以看一下:


PHP GUI探索_第3张图片
来自 https://github.com/krakjoe/ui

视线回来!敲黑板了

先下载扩展:https://pecl.php.net/package/ui 境外网请自觉开启蓝灯。


PHP GUI探索_第4张图片

我选择了Release 2.0.0 PHP7.0 NTS X64,解压后是三个dll文件。


开蓝灯真是没法儿写博客。。。

 php_ui.dll 复制到 PHP 的 ext 目录下, 

其余两个文件 libui.dll  pthreadVC2.dll 放到 PHP 的根目录下,也就是与 php.exe 的同级目录。

解压包里除了dll还有三个写好的游戏,我们测试下扩展是否可用:


PHP GUI探索_第5张图片
no。。。

ok,失败了,什么都没打开,我来看看官方文档。

在php.ini中把扩展加进去。


PHP GUI探索_第6张图片


PHP GUI探索_第7张图片
ok 成功了

GUI 写个小程序

还没去翻官方文档,先引用大神的小项目试手@怀素真

use UI\Window;

use UI\Size;

use UI\Controls\Entry;

use UI\Controls\Label;

use UI\Controls\Button;

use UI\Controls\Grid;

//创建一个窗口

//参数一表示窗口标题

//参数二表示窗口大小

//参数三表示是否显示菜单

$win = new Window('简单的计算器', new Size(640, 480), true);

//创建一个文本框

//Entry::Normal 普通单行文本框

//Entry::Password 密码框

//Entry::Search 搜索框

$num1 = new Entry(Entry::Normal);

$num2 = new Entry(Entry::Normal);

$ret = new Entry(Entry::Normal);

//创建一个标签

$lab = new Label('+');

//创建一个按钮

$btn = new class('计算') extends Button {

    public function __construct($text) {

        parent::__construct($text);

    }

    protected function onClick() {

        global $num1, $num2, $ret;

        $n1 = $num1->getText();

        $n2 = $num2->getText();

        $ret->setText($n1 + $n2);

    }

};

//创建一个网格

$grid = new Grid();

//把上面的控件加入到网格布局中

$grid->append($num1, 0, 0, 1, 1, true, Grid::Center, false, Grid::Center);

$grid->append($lab, 0, 1, 1, 1, true, Grid::Center, false, Grid::Center);

$grid->append($num2, 0, 2, 1, 1, true, Grid::Center, false, Grid::Center);

$grid->append($btn, 0, 3, 1, 1, true, Grid::Center, false, Grid::Center);

$grid->append($ret, 0, 4, 1, 1, true, Grid::Center, false, Grid::Center);

//把局加入到窗口中

$win->add($grid);

//显示窗口

$win->show();

UI\run();



下面这个小程序mark一下,可以参考下写法。


use UI\Window;

use UI\Size;

use UI\Controls\Box;

use UI\Controls\Entry;

use UI\Controls\Button;

use UI\Controls\Form;

use UI\Controls\Radio;

use UI\Controls\Check;

use UI\Controls\Combo;

use UI\Controls\MultilineEntry;

//创建一个窗口

//参数一表示窗口标题

//参数二表示窗口大小

//参数三表示是否显示菜单

$win = new Window('简单的计算器', new Size(640, 480), true);

//创建一个表单

$frm = new Form();

//用户名

$user = new Entry(Entry::Normal);

$frm->append('用户名:', $user, false);

//密码

$pwd = new Entry(Entry::Password);

$frm->append('密码:', $pwd, false);

//性别(单选)

$sex = new Radio();

$sex->append("男");

$sex->append("女");

$sex->append("未知");

$frm->append('性别:', $sex, false);

//爱好(多选)

//创建一个盒子,水平排列

$loveBox = new Box(Box::Horizontal);

$love1 = new Check('看书');

$love2 = new Check('旅游');

$love3 = new Check('游戏');

//把多选控件加入盒子中

$loveBox->append($love1);

$loveBox->append($love2);

$loveBox->append($love3);

$frm->append('爱好:', $loveBox, false);

//地区(下拉框)

$area = new Combo();

$area->append("北京");

$area->append("上海");

$area->append("武汉");

$frm->append('地区:', $area, false);

//简介(多行文本)

$desc = new MultilineEntry();

$frm->append('简介:', $desc, false);

//注册按钮

$reg = new class('注册', $win) extends Button {

    protected $win;

    public function __construct($text, $win) {

        $this->win = $win;

        parent::__construct($text);

    }

    //用于重写父类的单击事件

    protected function onClick() {

        $this->win->msg('消息', '你点击了注册按钮');

    }

};

$frm->append('', $reg);

$win->add($frm);

//显示窗口

$win->show();

UI\run();


PHP GUI探索_第8张图片
恭喜我进阶为GUI新手,下面进入新手训练营,当当当当~

你可能感兴趣的:(PHP GUI探索)