V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
szopen
V2EX  ›  PHP

PHP GUI 开发方案:利用 PHP 7.4 在激活 FFI 的情况下使用 libui 进行 GUI 程序开发

  •  
  •   szopen · 2019-09-17 09:12:59 +08:00 · 7665 次点击
    这是一个创建于 1655 天前的主题,其中的信息可能已经有所发展或是发生改变。

    libui PHP 绑定 https://github.com/chopins/php-libui, ( php 的 pecl ui 库存在版本兼容问题)

    PHP 7.4 win 编译版本: https://windows.php.net/qa/#php-7.4-nts-vc15-x64

    window 下的截图 截图

    23 条回复    2019-10-18 08:38:58 +08:00
    assad
        1
    assad  
       2019-09-17 09:51:14 +08:00
    好东西啊,支持一个先
    ben1024
        2
    ben1024  
       2019-09-17 09:55:28 +08:00
    php gui 样式和简易程度还是有要提高的点
    cmdOptionKana
        3
    cmdOptionKana  
       2019-09-17 10:00:27 +08:00
    借楼问一下 PHP 怎么把程序启动后出现在系统托盘,我想点击系统托盘的图标弹出个简单的菜单做些简单操作,实际上是开个本地服务器,通过浏览器访问,用网页前端做 GUI 界面。
    ben1024
        4
    ben1024  
       2019-09-17 10:09:57 +08:00   ❤️ 1
    @cmdOptionKana 可以通过 GUI 操作配置,PHP 服务监听配置作出响应,服务本身可以通过 Apache 或 PHP -S 开启
    harde
        5
    harde  
       2019-09-17 10:22:27 +08:00
    不是太能理解这种项目存在的意义。。。。
    qhxin
        6
    qhxin  
       2019-09-17 10:39:56 +08:00
    @harde 写上位机程序挺方便
    HiCode
        7
    HiCode  
       2019-09-17 10:42:46 +08:00   ❤️ 1
    @cmdOptionKana 你这种需求,要不通过 FFI 封装 windows api 实现,要不只能等 libui 家什么时候增加系统托盘的功能。
    salamanderMH
        8
    salamanderMH  
       2019-09-17 11:14:30 +08:00
    支持,但是 C#做的足够好了
    sagaxu
        9
    sagaxu  
       2019-09-17 11:26:40 +08:00 via Android
    @qhxin 用 wpf 不是更方便吗?
    szopen
        10
    szopen  
    OP
       2019-09-17 11:45:44 +08:00
    @harde 这个种需求可以帮助 PHP 开发者将原来的 web 管理后台之类的弄成桌面版本,还有一些 PHP 办公类也可以弄成桌面版本,现有的人力和代码就弄了,所以这个成本是很低的。需求肯定是有的
    HiCode
        11
    HiCode  
       2019-09-17 11:48:01 +08:00
    凑热闹打个广告啊:

    https://gitee.com/haimadongli001/php-iup

    这是另外一个封装 iup 的 php ui 库。

    iup 框架在保证足够小的同时,又包含足够多的功能,系统托盘,浏览器组件,编辑器组件(Scintilla)这些都有;

    同时还有功能强大的 cd 和 im 两个库可以处理图片;

    比 wxPHP 简单,比 libui 功能更丰富;
    harde
        12
    harde  
       2019-09-17 11:58:43 +08:00
    @szopen 从我个人角度,觉得还是有点伪需求,本身就 PHP 来说,优秀的 PHP 程序员就很难找,在这基础上再去做 UI。
    还不如找.NET 的来重做,用人成本和维护成本都低。再不济用 Electron 套壳我觉得也比用 PHP 构建强。
    当然,都是建立在企业用人与维护成本方面考虑~
    HiCode
        13
    HiCode  
       2019-09-17 12:04:29 +08:00
    @harde 如果能弄成 delphi 那样的 RAD 工具,界面靠拖曳,再加上 php 的简单和强大,基本可以秒杀很多“小需求”。

    有时候其他岗位一些复杂繁琐的“手动”操作,就可以用这样的工具来提高生产力。

    .NET 确实是一个不错的选择,奈何国内从业者相对少。

    用 PHP 做 GUI,本质上还是希望能够更好挖掘 php 开发者这个人才宝藏!
    n37r06u3
        14
    n37r06u3  
       2019-09-17 12:04:50 +08:00
    可以在 linux 和 macos 里用吗
    ben1024
        15
    ben1024  
       2019-09-17 12:20:27 +08:00
    还可以用 AAuto 快手编程 [哈哈]
    TangMonk
        16
    TangMonk  
       2019-09-17 12:26:47 +08:00
    可以编译成可执行文件吗?正好有这个需求
    ochatokori
        17
    ochatokori  
       2019-09-17 12:27:11 +08:00 via Android
    那为什么不用 electron,php 安心写接口呢
    HiCode
        18
    HiCode  
       2019-09-17 13:55:55 +08:00
    @ochatokori 因为还有很多人用的电脑很垃圾啊,你用垃圾电脑打开 electron 就知道为什么了。

    写软件有时候时给其他人用的,不是每个人的电脑都特别棒!
    TangMonk
        19
    TangMonk  
       2019-09-18 13:07:57 +08:00
    和这个相比有什么明显优势吗?

    https://github.com/gabrielrcouto/php-gui
    szopen
        20
    szopen  
    OP
       2019-09-21 22:16:45 +08:00
    @n37r06u3 支持 linux,windows,macos
    @TangMonk 可以通过 opcache 编译功能,然后配置 preload,让 php 默认调入口文件
    @TangMonk php-libui 与其原理不一样,我写这个是通过 FFI 进行 C/C++ API 调用实现; php-gui 的实现原理是 PHP 通过管道与二进制程序进行通信实现的(原理大概与调 redis 类似)
    pinews
        21
    pinews  
       2019-10-08 00:31:48 +08:00
    我知道 gui 是什么意思,但是你这个软件到底是什么意思啊?怎么用,有中文说明吗?
    back0893
        22
    back0893  
       2019-10-17 22:28:53 +08:00
    类似 py 的 tk 东西?
    szopen
        23
    szopen  
    OP
       2019-10-18 08:38:58 +08:00
    @pinews 还没有时间写文档,怎么用你现在只能看代码库中的例子以及了解一下 FFI
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2722 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:38 · PVG 20:38 · LAX 05:38 · JFK 08:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.