登录  /  注册

PHP编译器BPC6.0已发布,聊聊有哪些新功能吧!

藏色散人
发布: 2022-12-21 17:40:01
转载
5082人浏览过

本篇文章主要给大家介绍php编译器bpc6.0的相关知识,聊聊该编译器都更新了哪些新功能,希望对需要的朋友有所帮助!

使用指南: github.com/bob-php-compiler/bpc-re...

简言之,BPC可以将PHP代码最终转译成C语言,然后编译成动态链接库或者可执行程序.

BPC 5.0已经能够成功编译Zend Framework 1和我们公司自己的诸多项目.

但要想更广泛的应用,还缺两个大特性:

  • namespace

  • closure

1. 支持 namespace

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

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

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

<?php $classname = &#39;\\Foo\\Bar\\Baz&#39;;
$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 的项目,所以不好做完整的验证.【推荐学习:php视频教程

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

  • start.php

  • ws_test.php

  • tcp_test.php

  • SimpleChat.php

  • BinaryTransfer.php

  • TextTransfer.php

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

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

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

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

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

4. 几个常见问题?

  • BPC是否开源?

    BPC是我们公司的内部项目,不打算开源.

    商业化策略还未确定,在正式商业化前,我们每次release都会带一个约7天的试用license,如果过期了还想试用,只要给我们发个邮件我们就会再给license.

    如果想要就此项目进行深度合作,可以发邮件到 YnBjQG91cmF0cy5jb20=

  • BPC 和 VKCOM/kphp 以及 peachpiecompiler/peachpie 有什么区别?

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

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

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

  • BPC 和 Zend Guard, ionCube 以及 Swoole Compiler 有什么区别?

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

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

  • PHP官方是否会做编译器?

PHP官方明确不做Native AOT. 参看 Ahead of Time Compiler/AOT for PHP8?

以上就是PHP编译器BPC6.0已发布,聊聊有哪些新功能吧!的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:learnku网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号