首页 后端开发 php教程 用 PHP-GTK2 做 Win32 GUI 程序_PHP教程

用 PHP-GTK2 做 Win32 GUI 程序_PHP教程

Jul 13, 2016 pm 05:39 PM
gui php win32 可以 执行 服务器 程序 脚本

    PHP通常是做为服务器端脚本执行,如果告诉你PHP可以编写普通的GUI程序,你应该很感兴趣.下面介绍的PHP-GTK就是PHP的GUI扩展.GTK是一个业界标准的图形库,具有良好的移植性.如果你用过linux的gnome桌面环境,对它应该不会陌生,Gnome就是在KDE遇到Qt许可证障碍后发展的自由软件,GTK则是其采用的图形库。

    PHP-GTK采用的是组件思想(可见组件思想几十年前就有了),为此不能不提到tcl/tk语言。

    Tcl/Tk 的发明人 John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路 CAD 设计中,很多时间是花在编程建立测试环境上。并且,环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使 Ousterhout 教授力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了Tcl (Tool Command Language) 语言的产生。TCL经常被用于 快速原型开发,脚本编程,GUI和测试等方面。

    Tcl 最初的构想的是希望把编程按照基于组件的方法 (Component Approach),即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一个种方法将程序分割成一个个小的, 具备一定“完整”功能的,可重复使用的组件。这些小的组件小到可以基本满足一些独立的应用程序的需求,其它部分可由这些小的组件功能基础上生成。不同的组件有不同的功能,用于不同的目的。并可为其它的应用程序所利用。当然, 这种语言还要有良好的扩展性, 以便用户为其增添新的功能模块。最后,需要用一种强的,灵活的“胶水”把这些组件“粘”合在一起, 使各个组件之间可互相“通信”,协同工作。程序设计有如拼图游戏一样,这种设计思想与后来的 Java 不谋而合。终于在1988 年的春天, 这种强大灵活的胶水 - Tcl 语言被发明出来了。

    按照 Ousterhout 教授的定义,Tcl 是一种可嵌入的命令脚本化语言 (Command Script Language)。“可嵌入”是指把很多应用有效,无缝地集成在一起。

    说起来也很类似于现在炒做的很热闹的.NET,.NET有一个IL,中间语言,你可以用合适的语言做组件,通过IL实现模块的衔接和重用。说白了,微软这个思想就是借鉴了十几年前的tcl/tk,只不过微软有钱可以做得更好而已。

    这种结构的先进性不言而喻,有好的代码可重用性,简单易学,有良好的扩展性,可重用,执行效率比单纯的脚本高,功能也更强,解释语言,代码能够动态的改变,平台无关。Win32, UNIX, Mac 上都可以跑,代码紧凑,易于维护调试简单等等。这种方式为后来很多脚本语言采用,如python,perl 等,php脚本的天性也非常适合做这种扩展,php-gtk只是其扩展的一种。

    PHP-GTK创始人Andrei Zmievski 回忆了 PHP-GTK 计划和创建的过程:

    “我总是对 GUI 编程有着浓厚的兴趣。我发现 Gtk+ 是一个非常好的工具包。目睹了 PyGtk 和 GTK-Perl 的实现,我决定尝试 PHP 是否也能够被做成 Gtk+ 的接口。2000年8月,我有了更多的业余时间,于是我开始试验。我参考了 PyGtk 的实现方法,因为它有着相当完全的实现和漂亮的面向对象的接口。James Henstridge,PyG 的作者,在最初的筹备阶段提供了极大的帮助。

    “手工写 Gtk+ 函数全部的接口几乎是不可能的事情,所以我把重点放在了代码生成上,就像 PyGtk 做的一样。代码生成器是一个PHP 程序,它可以读取包含 Gtk+ 类、常量和方法信息的一系列的 .defs 文件并生成与 PHP 相接口的 C 代码。无法自动生成的部分可以提交到 .overrides 文件。

    “代码生成器和基础结构的工作花了我一定的时间,因为我在 2000 年秋天这段时间里只能花很少的时间在 PHP-GTK 上。在我把 PHP-GTK 给 Frank Kromann 演示过后,他产生了浓厚的兴趣,并开始帮助我完成代码生成器和 Win32 的实现。当我们写了第一个 Hello World 程序并设法使之工作之时,我们的喜悦之情溢于言表。两个多月后,这个工程初见成效,并于 2001 年 3 月 1 日发布了内部版本。

    “感到 PHP-GTK 前景广阔,我便为它专门设置了邮件列表和 CVS 知识库。同时,gtk.php.net 网站也建立起来。”

    一个简单的实例,更多的看安装包里面的 Demos。php-gtk 官方站点为 http://gtk.php.net,有在线手册供查询。目前 php-gtk 最高版本是 PHP-GTK2,还在进一步完善中。

    可以从 http://gtk.php.net/download.php 下载一个完整的运行和测试软件包,在命令行下运行:

    php demosxxx.php

    就可以测试里边带的演示程序。

    相信第一次看到演示的人一定会大吃一惊:原来 PHP 真能开发 Win32 的 GUI 桌面程序呀!

    以下是一个示例,保存成名为 mydemo.php 文件到 demos 文件夹中,运行命令:

    C:phpgtk2>php demosmydemo.php

    就会弹出一个小窗口,可以用鼠标拖拽改变它的大小,点击上面的按钮,窗口就关闭,然后在 DOS 窗口里输出“Hello World!”字符串。

          function destroy()
      {
        Gtk::main_quit();
      }

      function hello()
      {
        global $window;
        print "Hello World! ";
        $window-> destroy();
      }
      //建立一个GtkWindow
      $window = &new GtkWindow();
      //将 "destroy " signal用connect() 方法连接到shutdown函式
      $window->connect("destroy", "destroy");
      //建立一个GtkButton,按钮文字为 "按我 "
      $button = &new GtkButton( "Click Me ");
      $button-> connect("clicked", "hello");
      //把GtkButton放到是container的GtkWindow中
      $window-> add($button);
      //显示$window以及它的所有child widget
      $window-> show_all();
      //进入程式主回圈(即程式启动之意)
      gtk::main();
    ?>

    网眼测试感言:

    PHP 能做到这一步着实让人很感慨!但感慨之后,又觉得怪怪的。
    首先是 PHP 在 Web 开发上的大行其道,遮掩了其桌面开发方面的光亮--还算不上光辉。而 PHP 在 Web 开发特别是网站开发方面,虽然早已经是业界老大,但其名分则一直是老三、老四的位置。这时,再谈桌面开发,则觉得是“不务正业”了。
    事实是,PHP-GTK 这个 PHP 分支是发展非常缓慢的,截至2010年8月份,其最近一次更新已经是2年半以前了。要么是资金困扰、要么是人力困扰、要么是看不到商业前景,总之这个项目随时都要胎死腹中的样子,好像一阵微风都能吹灭它。
    桌面开发,流行的是 VC++、Delphi、Winform(C#/VB.NET)、再勉强算上Java,好像根本没 PHP 什么事。本人觉得,既然借用的是 Linux 下的 GTK 库,去 Linux 下发展岂不是更好,为何非要往 Windows 这扇窗户里钻呢?PHP、Python的语法都有点怪异,不知道习惯了 VC++ 的人喜欢不喜欢?要说个人喜好,我还是最喜欢 C#,它吸收了 C/C++、JAVA等语言的优点,语法纯正、符合习惯,能同时开发 Webform 和 Winform 程序,应该是前途无量的。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/486265.htmlTechArticlePHP通常是做为服务器端脚本执行,如果告诉你PHP可以编写普通的GUI程序,你应该很感兴趣.下面介绍的PHP-GTK就是PHP的GUI扩展.GTK是一个业界标...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

CakePHP 项目配置 CakePHP 项目配置 Sep 10, 2024 pm 05:25 PM

在本章中,我们将了解CakePHP中的环境变量、常规配置、数据库配置和电子邮件配置。

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 日期和时间 CakePHP 日期和时间 Sep 10, 2024 pm 05:27 PM

为了在 cakephp4 中处理日期和时间,我们将使用可用的 FrozenTime 类。

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

为了进行文件上传,我们将使用表单助手。这是文件上传的示例。

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

在本章中,我们将学习以下与路由相关的主题?

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 创建验证器 CakePHP 创建验证器 Sep 10, 2024 pm 05:26 PM

可以通过在控制器中添加以下两行来创建验证器。

See all articles