이 문서의 영어 버전을 읽어보세요: 영어
이 문서를 다른 언어(영어, 중국어 간체) 로 읽어 보세요.
Go
와 NodeJS
의 강력한 성장으로 인해 PHP
의 시장 점유율은 점차 줄어들었지만 PHP
공식적으로 여전히 Web
프로그래밍 분야에 집착하고 있습니다. polarphp
NodeJS
및 Go
의 관련 기능을 활용하여 zendVM
다시 캡슐화하고, PHP
이전에 포기한 기능과 강력한 Web
속성 중 일부를 제거하고, 새로운 런타임 프레임워크 libpdk
세트를 구현하여 PHP
언어를 진정한 범용 스크립팅 언어로 구축합니다. 비동기 프로그래밍, 코루틴, 스레드, 내장된 unicode
지원, 표준 파일 IO
및 기타 기능을 갖춘 PHP
통해 PHP
프로그래머는 web
애플리케이션을 수행할 수 있을 뿐만 아니라 실제 서버 측 애플리케이션을 차분하게 접할 수 있습니다. polarphp
는 새로운 언어가 아니지만 공식 언어에 추가로 PHP
언어를 위한 새로운 컴파일러 및 런타임입니다.
PHP
언어 표준과 호환되며 더 이상 사용되지 않는 언어 기능을 제거합니다. unicode
문자 표준 지원 제한된 개발 자원으로 인해 개발 계획은 다음과 같이 잠정적으로 설정되었습니다.
PHP
컴파일러 프런트엔드 구현LLVM
프로젝트 이식을 위한 lit
테스트 프레임워크phplit
회귀 테스트 프레임워크를 사용하여 polarphp
컴파일러 프런트엔드 전체 테스트polarvm
의 명령어 세트를 정의하고 가상 머신의 인프라를 완성합니다.polarphp
AST의 명령 세트 컴파일을 완료하고 당분간 IR 레이어를 정의하지 않습니다.phplit
사용하여 언어 구조부터 명령어 세트까지 모든 컴파일된 모듈을 테스트하세요.PHP
내장 GC
사용하여 임시로 최소 런타임 구현PHP
언어 표준 라이브러리 libpdk
( cpp
부분)의 기본 아키텍처 구현polarphp
설치해 보세요.PHP
표준 라이브러리를 구현하기 위해 커뮤니티를 동원합니다( libpdk
기본 지원과 함께 PHP
코드를 사용하여 구현됨). polarphp
프로젝트 라이브러리 복제 git clone https://github.com/polarphp/polarphp.git
cd polarphp
git submodule init
git submodule update
git checkout v0.0.1-alpha
./devtools/scripts/build_polarphp.sh
이때 스크립트가 관련 이미지를 컴파일하기 시작하므로 시간이 오래 걸립니다. 컴파일이 완료될 때까지 기다렸다가 다음을 실행합니다.
docker images
이때 출력에 다음 이미지가 있는지 확인하십시오.
문제가 없으면 미러에서 polarphp
정상적으로 실행되는지 테스트를 시작합니다.
docker run --rm -it polarphp_debug
컨테이너를 입력한 후 polarphp
명령줄 프로그램을 입력하세요.
polar --version
다음과 같은 결과가 나오면:
polarphp 0.0.1-git (built: 2019-01-27 12:22)
Copyright (c) 2016-2018 The polarphp foundation (https://polar.foundation)
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
축하합니다. polarphp
런타임 환경을 성공적으로 컴파일했습니다. 이미지를 컴파일할 때 ~/temp/
폴더에 테스트 스크립트를 배치했습니다.
if ( function_exists ( ' phpretrieve_version_str ' )) {
echo " version str: " . php retrieve_version_str () . "n" ;
}
if ( function_exists ( ' phpretrieve_major_version ' )) {
echo " major version: " . php retrieve_major_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_minor_version ' )) {
echo " minor version: " . php retrieve_minor_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_patch_version ' )) {
echo " patch version: " . php retrieve_patch_version () . "n" ;
}
다음 명령을 실행할 수 있습니다.
polar ~/temp/main.php
오류가 없으면 다음과 같은 출력이 표시됩니다.
version str: polarphp 0.0.1-git
major version: 0
minor version: 0
patch version: 1
polarphp
테스트해 주셔서 감사합니다. 질문이 있는 경우 아래 WeChat QR 코드를 스캔하여 그룹 커뮤니케이션에 참여하세요.
현재 우리는 중국 사용자만을 대상으로 하기 때문에 WeChat 및 QQ
그룹을 사용하여 소통합니다. 관심 있는 학생들은 코드를 스캔하여 참여할 수 있습니다.
추신: QR 코드를 스캔할 때 방문 목적을 표시하십시오. 예:
polarphp
학습 또는PHP
매니아
polarphp
php
언어 프로젝트를 기반으로 2차 개발을 수행하며 php
프로젝트 계약을 준수합니다. 자세한 내용은 프로젝트 계약을 참조하세요.
===========================