ToB企服应用市场:ToB评测及商务社交产业平台

标题: aardio + PHP 可视化快速开发独立 EXE 桌面程序 [打印本页]

作者: 灌篮少年    时间: 2022-9-28 12:34
标题: aardio + PHP 可视化快速开发独立 EXE 桌面程序
aardio 支持与很多编程语言混合开发。
网络上大家分享的 aardio + Python 混合开发的文章很多,aardio + PHP 的文章却很少。
其实 aardio 与 PHP 混合开发是真的简单 !
▶ CGI 调用 PHP

aardio 虽然很小,但自带嵌入式 HTTP 服务器,通过 CGI 调用 PHP 也非常简单。
这种方式就跟平时用 PHP 写网站基本一样了,而且兼容所有 PHP 版本。下面我们直接看 aardio 代码示例:
  1. import win.ui;
  2. var winform = win.form(text="PHP_CGI 服务器");
  3. import web.form;
  4. var wb = web.form( winform);
  5. //启动 PHP CGI 服务端
  6. import process.php;
  7. //获取 PHP 页面网址
  8. var url = process.php("/res/test.php");
  9. //调用浏览器组件显示网页
  10. wb.go(url);
  11. winform.show();
  12. win.loopMessage();
复制代码
是不是非常简单?
这就是一个完整的 aardio + PHP 程序。
上面短短几句代码包含了:
图形界面、浏览器组件、PHP 服务端、HTTP 服务器。
aardio 把所有需要操心的事都默默地做好了,例如 HTTP 服务器会自动分配空闲端口,不同程序不会相互冲突。在需要时会自动启动 HTTP 服务端线程,在界面线程退出时 —— 自动退出 HTTP 服务端,全部都自动处理好。
process.php 会自动搜索 php-cgi.exe,搜索顺序如下:
  1. 1、\php\php-cgi.exe
  2. 2、环境变量 PHP_CGI_EXE_PATH 指定的位置
  3. 3、path 环境变量指定的目录下查找 php-cgi.exe
  4. 4、自注册表搜索
  5. 5、C:\Program Files\PHP 目录下搜索
  6. 6、ardio 中 PHP 扩展库自带的  ~\lib\php\.dll\php-cgi.exe
复制代码
也可以用 process.php.cgiPath 明确指定路径,例如:
  1. process.php.cgiPath = "~\lib\php\.dll\php-cgi.exe"
复制代码
至于下面的代码会返回访问 "/res/test.php" 的 HTTP 地址:
  1. var url = process.php("/res/test.php");
复制代码
支持内嵌资源目录下的文件路径:
 
如果软件自带 PHP 组件,在 aardio 中占击「发布」生成 EXE —— 可点击「转换为独立 EXE」按钮生成单 EXE 程序:
▶ 嵌入 PHP

aardio 提供了 php 扩展库可以直接调用 PHP 的解释器。
php 扩展库自带的 PHP 版本为 v5.2 ,这个版本的好处是体积非常小,兼容到 XP,不需要额外再安装其他 C++ 运行库。其实用来写一般的桌面程序够用了。如果您希望使用高版本 PHP —— 请改用前面讲的 CGI 方式调用。
aardio 嵌入式调用 PHP 示例:
  1. import php;
  2. import console;
  3.   
  4. //PHP代码
  5. var phpcode =/*
  6.     $a="我是PHP中的变量a";
  7.     function main(){
  8.         global $a;
  9.         return $a." 这是main()函数的返回值";
  10.     };  
  11. */
  12. //运行 PHP 代码
  13. php.exec(phpcode)  
  14. //运行 PHP 代码,调用 PHP 函数返回值
  15. var ret = php.eval("main()")
  16. console.log( ret );
  17. //运行 PHP 代码,返回表达式的值
  18. var ret = php.eval("8899")
  19. console.log( ret );
  20. //再用 eval 函数访问 PHP 中的变量
  21. var ret = php.eval("$a")
  22. console.log( ret );
  23. //更简单一些,直接读 PHP 中的变量,注意去掉变量前面的$符号
  24. console.log("直接读取PHP中的变量", php.a )
  25. //同上,也可以直接修改 PHP 中的变量
  26. php.global_abc = 2011
  27. //请注意: PHP返回给aardio的值都是字符串类型
  28. console.pause();
复制代码
▶ aardio 与 PHP 语法对比

请参考:aardio 编程语言快速入门——语法速览
要注意 PHP 5.2 默认编码为 GBK,而 aardio 默认编码为 UTF-8 编码。
PHP 的注释语法与 aardio 一样,
PHP 语句也以分号结束,并且分号不能象 aardio 那样省略
PHP 中的所有变量必须以 $ 符号开始。 $号是变量的修饰前缀,但不是变量名称的一部分
在PHP中函数内部变量默认为局部变量(这与aardio,Javascript正好相反),使用 global 语句引入或声明全局变量
PHP单引号中是纯文本,类似 \n 这样的转义符不起作用,而双引号中可以使用转义符,aardio中也有类似的机制,不过规则正好相反。aardio中双引号中才是普通文本,单引号中支持转义符。
更多语法对比请参考:
aardio 范例 > 调用其他语言 > PHP > 语法比较
▶ PHP 调用 aardio

aardio 调用 PHP,PHP 再回调 aardio 代码:
  1. import php;
  2. import console;
  3. //PHP代码
  4. var phpCode =/*
  5.     $ret = aardio("
  6.         import win;
  7.         import web.json;
  8.         
  9.         win.msgbox('我是 aardio 代码');
  10.         return web.json.stringify({a=123;b=456});
  11.     ")
  12. */
  13. //运行PHP代码,返回表达式的值
  14. var ret = php.eval(phpCode)
  15. console.log( ret );
  16. console.pause();
复制代码
注意: aardio 返回给PHP的值都是字符串类型, PHP 调用的 aardio 代码使用 return 语句返回值。
▶ 嵌入PHP:自定义 PHP 输出

为了方便测试,首先用下面的 aardio 代码生成测试 PHP 文件:
  1. phpcode = /*
  2. <?php
  3.     echo "<p>Hello World</p>";
  4.     phpinfo(INFO_ALL);
  5. ?>
  6. */
  7. string.save("/test.php",phpcode )
复制代码
然后用 aardio 调用上面的 test.php :
  1. import php;
  2. php.print = function( msg ) {
  3.     import console;
  4.     console.log(msg);
  5.     console.more();
  6. }
  7. //执行 PHP 文件
  8. php.dofile("/test.php")
复制代码
在 aardio 中只要简单的定义 php.print 函数,就可以捕获 PHP 的输出数据了。
▶ 嵌入 PHP:重置 PHP 解释器

下面直接看 aardio 代码如何重置 PHP 解释器:
  1. import php;
  2. import console;
  3. //打开控制台
  4. console.open();
  5. //重置 PHP 解释器
  6. php.begin()
  7.     php.eval("$a=123");
  8.     console.log( php.a );
  9.    
  10. php.end()
  11. //重置 PHP 解释器
  12. php.begin()
  13.     php.eval("$b=456");
  14.    
  15.     //注意这里PHP中的变量$a已经失效
  16.     console.log( php.a,php.b );
  17.    
  18. php.end()
  19. console.pause();
复制代码
▶ 混合不同编程语言只是可选项

aardio 虽然可以方便地混合很多编程语言,但混合编程仅仅是可选项。下面这些很受欢迎的桌面软件 —— 都是使用纯 aardio 代码编写。
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4