PHP编译器BPC6.0的新功能有哪些

发布时间:2022-12-27 11:41:48 作者:iii
来源:亿速云 阅读:87

这篇文章主要介绍“PHP编译器BPC6.0的新功能有哪些”,在日常操作中,相信很多人在PHP编译器BPC6.0的新功能有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP编译器BPC6.0的新功能有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 支持 namespace

前些天看到 nikic/PHP-Parser 的 文档, 发现PHP的namespace可以很容易地转化.

于是就照着文档写了一个 phptobpc.php, 借助这个小程序,可以将使用namespace的PHP代码转为没有namespace的.

当然BPC自身也做了相应的支持,这样动态调用也没问题.比如:

<?php
$classname = '\\Foo\\Bar\\Baz';
$o = new $classname;

我把这个程序打包成 phptobpc.phar, 下载回来 chmod +x 就能使用.

2. 支持 closure

BPC之前就已经支持简单的匿名函数,比如:

<?php
$a = array(1,2,3);
usort($a, function ($a, $b) { ... });

BPC 6.0完善了closure实现,支持use,typehint,default value等特性,比如:

<?php
$a = 1;$b = 2;
$f = function (array $arg1, &$arg2, $arg3 = 1) use ($a, &$b) { ... };

3. 成功编译 workerman

之前有网友说能不能把 workerman 整个编译起来.

现在支持了 namespace 和 closure, 正好可以编译 workerman 试一试.

由于编译后执行和PHP解释执行还是有一些区别,要想成功编译和运行,需要对workerman的代码做一些微调.

整体来说,调整量很小.感兴趣的可以去查看 git commit .

由于 workerman 没有 unit tests, 我们自己也没有 workerman 的项目,所以不好做完整的验证.

但我照着 workerman手册, 写了以下几个例子:

运行起来,测试了一下,没有问题.

start start -d stop restart status connections 这些命令都OK.

但是由于编译后只有一个二进制文件,reload显然是达不到预期效果的.

这几个例子我都静态编译出来了,想动手试一下的直接 下载 回来 gunzip 然后 chmod +x 执行即可 (注意只能在ubuntu 18.04上运行).

想自己动手编译的,参看 src/Makefile 和 examples/build.sh

4. 几个常见问题?

BPC的目标是源码保护和软件授权(最终编译为C),在此基础上尽可能和PHP兼容,也就是说,一个php脚本最好什么都不改就能编译成二进制.

kphp的目标是性能(编译为C++),为此,它仅支持 limited subset of PHP, 参看 KPHP vs PHP differences

peachpie的目标也是性能(编译为C#),同时将.NET引进来了.

Zend Guard, ionCube和Swoole Compiler都是在PHP opcode的基础上进行源码保护的.

BPC应该来说和它们不是一类东西,只是目标相同罢了,BPC和kphp peachpie算是一类.

到此,关于“PHP编译器BPC6.0的新功能有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. php中const关键字的功能
  2. php通过thrift操作hbase

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php bpc

上一篇:react中如何设置focus

下一篇:IDEA中如何配置安装node.js

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》