初探PHP7新扩展ui(GUI)

PHP7出来已经很久了,今天找资料的时候,发现PHP7版本增加了一个新扩展ui,能实现图形化的界面,大概尝试了一下,感觉类似java。官方链接见ui扩展,此扩展目前最高版本是2.0,支持php7.0和php7.1,tiandi试了在php7.2下安装,结果报错,估计要等下一个版本才能用在php7.2下了。

官方自带了3个DEMO,贪吃蛇,星空,和趋势图,都可以从上面的URL里介绍的git地址获取得到。看了贪吃蛇和星空的源码,简化了一下,tiandi制作了一个更简单的Demo,控制一个小方块在屏幕里上下左右移动。

代码如下,通过onKey事件来进行上下左右按键的行为。注意,这里需要判定当前方块的所在位置是否已出窗口边缘。

<?php
use UI\Window;
use UI\Point;
use UI\Size;
use UI\Area;
use UI\Key;
use UI\Controls\Box;
use UI\Draw\Pen;
use UI\Draw\Path;
use UI\Draw\Color;
use UI\Executor;

define('WINWIDTH',640); //窗口宽度
define('WINHEIGHT',480);  //窗口高度
define('MYSIZE',20);  //方块大小

$win = new class("可移动的方块DEMO", new Size(WINWIDTH, WINHEIGHT), false) extends Window {

    public function addExecutor(Executor $executor) {
        $this->executors[] = $executor;
    }

    protected function onClosing() {
       foreach ($this->executors as $executor) {
            $executor->kill();
       }
       $this->destroy();
       UI\quit();
    }
};

$box = new Box(Box::Vertical);
$win->add($box);

$stars = new class($box) extends Area {

    protected function onKey(string $key, int $ext, int $flags) {
        if ($flags & Area::Down) {
            switch ($ext) {
                case Key::Right: 
                    if ($this->pos->x < WINWIDTH - MYSIZE) {
                        $this->pos->x += 10;
                        $this->redraw();
                    }
                    break;

                case Key::Left:                 
                    if ($this->pos->x > 0) {
                        $this->pos->x -= 10;
                        $this->redraw();
                    }
                    break;

                case Key::Down:                   
                    if ($this->pos->y < WINHEIGHT - MYSIZE) {
                        $this->pos->y += 10;
                        $this->redraw();
                    }
                    break;

                case Key::Up:                    
                    if ($this->pos->y > 0) {
                        $this->pos->y -= 10;
                        $this->redraw();
                    }
                    break;
            }
        }
    }

    protected function onDraw(UI\Draw\Pen $pen, UI\Size $size, UI\Point $clip, UI\Size $clipSize) {
        $hSize = $size / 2;

        $path = new Path();
        $path->addRectangle(Point::at(0), $size);
        $path->end();
        $pen->fill($path, 0x000000FF);

        $path = new Path();
        $pos = $this->pos;
        $path->addRectangle($pos, new Size(MYSIZE, MYSIZE));
        $path->end();
        $color = new Color();
        $color->r = 255;
        $color->g = 0;
        $color->b = 0;
        $pen->fill($path, $color);
    }

    public function __construct($box) {
        $this->box = $box;
        $this->pos = $pos = new Point(0,0);

        $this->box->append($this, true);
    }
};

$animator = new class($stars) extends Executor {

    protected function onExecute() {
        $this->area->redraw();
    }

    public function __construct(Area $area) {
        $this->area = $area;
        parent::__construct();
    }
};

$win->addExecutor($animator);

$win->show();

UI\run();

运行结果如下截图所示,可通过键盘的上下左右来控制红色方块的移动。


转载于:https://my.oschina.net/mickelfeng/blog/1832042

phpWechat 是由一个具有多年行业开发经验的前端 UI 设计师、PHP开发工程师组成的团队设计、研发的一套的微信公众平台管理系统,您可以瞬间完成一个公共号或者PC站或者两者皆有的平台搭建。 phpWeChat 微信+网站开发框架功能亮点: 1、100%开源,没有任何加密文件 phpWeChat核心文件100%开源,没有任何加密文件,开发者可以放心使用而无需担心留有后门程序等。 2、程序轻量级,一天读完所有代码 核心框架压缩包只有2.66M,十分利于开发者迅速阅读全部代码。 3、代码严谨,结构清晰 phpWeChat使用MVC开发模式,各个功能模块之间独立并目录结构统一。开发者可迅速掌握phpWeChat的框架结构。 4、二次开发文档十分完善 我们提供了完善的phpWeChat二次开发文档,便于开发者学习与查阅。 5、高度集成微信接口 phpWeChat高度集成了微信公共号的自动回复、菜单管理、素材管理、模板消息、粉丝管理、微信支付等常用接口,您只需一个函数或2/3行代码即可实现原本需要很费时费力才能开发的功能。 6、phpWeChat也是一个PC(网站)开发框架和CMS 慢慢您会发现,phpWeChat是一个更接近CMS功能的框架。 7、高度封装常用开发功能 只需一两行固定的代码,您便可以写出列表分页、微信支付、文件上传、邮件发送、短信发送等功能。 8、数据结构合理,负载强劲 phpWeChat集成了常见的内存级缓存(MemCache)、文件缓存处理方案,使得系统更符合大数据、大并发的公共号或网站使用。 9、集成应用市场,功能拓展一瞬间 phpWeChat集成了应用市场并在线安装应用的功能,您可以在一瞬间安装完成其他开发者开发的功能模块。 phpWeChat安装方法: 将下载的程序压缩包(zip格式)解压后,将全部文件和文件夹上传至网站根目录。然后输入域名/install.php 即可进入安装程序。 注意:安装phpWeChat前请先创建好phpWeChat所需的数据库。 phpWeChat 目录结构: addons 功能模块目录 admin 公用后台目录 api 插件目录 data 数据缓存目录 install 安装程序目录,安装后请改名或删除 include 公用操作类目录 statics 静态文件目录 template 视图(模板)目录 upload 上传文件存放目录 phpWeChat 更日志: 版v1.0.3发布: phpWeChat PC+微信公众号开发核心框架v1.0.3针对v1.0.2版本出现的问题,主要修复了和增加了以下功能: 1、优化自定义模块操作; 2、优化安装过程; 3、修复一处在线支付的PHP版本兼容问题; 4、修复一处自定义模块的问题; 5、修复后台模块管理显示未知版本的bug; 6、修复粉丝行为IP报错的Bug; 7、删除一些冗余代码; 8、修复消息模板不存在时,一直提示[同步中]的bug。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值