찾다
백엔드 개발PHP 튜토리얼PHP 컴파일러 BPC6.0이 출시되었습니다. 새로운 기능에 대해 이야기해 보겠습니다!

本篇文章主要给大家介绍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와 kphppeakey는 동일한 범주에 속한다고 간주됩니다.

  • PHP는 공식적으로 컴파일러를 만들까요?

PHP는 공식적으로 네이티브 AOT를 지원하지 않습니다.

PHP8용 AOT(Ahead of Time Compiler/AOT)를 참조하세요.

위 내용은 PHP 컴파일러 BPC6.0이 출시되었습니다. 새로운 기능에 대해 이야기해 보겠습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 learnku에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
PHP 의존성 주입 컨테이너 : 빠른 시작PHP 의존성 주입 컨테이너 : 빠른 시작May 13, 2025 am 12:11 AM

aphpdectionenceindectioncontainerisatoolthatmanagesclassdependencies, 향상 Codemodularity, testability 및 maintainability.itactAsacentralHubForCreatingAndingDinjectingDingingDingingdecting.

PHP의 종속성 주입 대 서비스 로케이터PHP의 종속성 주입 대 서비스 로케이터May 13, 2025 am 12:10 AM

대규모 응용 프로그램의 경우 SELLENCIONINGESS (DI)를 선택하십시오. ServicElocator는 소규모 프로젝트 또는 프로토 타입에 적합합니다. 1) DI는 생성자 주입을 통한 코드의 테스트 가능성과 모듈성을 향상시킵니다. 2) Servicelocator는 센터 등록을 통해 서비스를 얻습니다. 이는 편리하지만 코드 커플 링이 증가 할 수 있습니다.

PHP 성능 최적화 전략.PHP 성능 최적화 전략.May 13, 2025 am 12:06 AM

phPapplicationSCanBeoptimizedForsPeedandefficiencyby : 1) ENABLEOPCACHEINPHP.INI, 2) PREPAREDSTATEMENTSWITHPDOFORDATABASEQUERIES 사용

PHP 이메일 검증 : 이메일이 올바르게 전송되도록합니다PHP 이메일 검증 : 이메일이 올바르게 전송되도록합니다May 13, 2025 am 12:06 AM

phpeMailValidationInvoLvestHreesteps : 1) formatValidationUsingRegularexpressionsTochemailformat; 2) dnsValidationToErethedomainHasaValidMxRecord; 3) smtpvalidation, theSTHOROUGHMETHOD, theCheckSiftheCefTHECCECKSOCCONNECTERTETETETETETETWERTETWERTETWER

PHP 응용 프로그램을 더 빨리 만드는 방법PHP 응용 프로그램을 더 빨리 만드는 방법May 12, 2025 am 12:12 AM

TomakePhPapplicationSfaster, followthesesteps : 1) useopCodeCaching likeOpcachetOrpectipiledScriptBecode.2) MinimizedAtabaseQueriesByUsingQueryCachingandEfficientIndexing.3) leveragephp7 assistorBetterCodeeficiession.4) 구현 전략적 지시

PHP 성능 최적화 점검표 : 지금 속도를 향상시킵니다PHP 성능 최적화 점검표 : 지금 속도를 향상시킵니다May 12, 2025 am 12:07 AM

toImprovePhPapplicationSpeed, followthesesteps : 1) enableOpCodeCachingWithApcuTeCeScripteXecutionTime.2) 구현 구현

PHP 의존성 주입 : 코드 테스트 가능성을 향상시킵니다PHP 의존성 주입 : 코드 테스트 가능성을 향상시킵니다May 12, 2025 am 12:03 AM

의존성 주입 (DI)은 명시 적으로 전이적 종속성에 의해 PHP 코드의 테스트 가능성을 크게 향상시킵니다. 1) DI 디퍼 커플 링 클래스 및 특정 구현은 테스트 및 유지 보수를보다 유연하게 만듭니다. 2) 세 가지 유형 중에서, 생성자는 상태를 일관성있게 유지하기 위해 명시 적 표현 의존성을 주입합니다. 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하여 코드 품질 및 개발 효율성을 향상시킵니다.

PHP 성능 최적화 : 데이터베이스 쿼리 최적화PHP 성능 최적화 : 데이터베이스 쿼리 최적화May 12, 2025 am 12:02 AM

DatabaseQuesyOptimizationInphPinVolvesVesstoigiestoInsperferferferferformance.1) SelectOnlyNecessaryColumnstoredAtatatransfer.2) useinDexingTeSpeedUpdatarretieval.3) ubstractOrerEresultSoffRequeries.4) UtilizePreDstatements Offeffi

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기