Read the English version of this document: English
阅读本文档其他语言版本: English, 简体中文.
随着Go
和NodeJS
的强势崛起,PHP
的市场份额逐渐被蚕食,而PHP
官方仍然坚守在Web
编程领域,有些东西越是想守住就越守不住。polarphp
借鉴NodeJS
和Go
的相关特性对zendVM
重新封装,去掉PHP
一些古老弃用的特性和强Web
属性,通过实现一套新的运行时框架libpdk
,将PHP
语言打造成为一门真正的通用性脚本语言,赋能PHP
,让其拥有异步编程,协程,线程,内置的unicode
支持,标准的文件IO
等等特性,让PHP
程序员不仅仅能做web
应用,也能从容面对真正的服务端应用。polarphp
不是一门新的语言,而是PHP
语言的一种运行时容器。
- 兼容最新的
PHP
语言标准,移除废弃语言特性 - 内置
unicode
字符标准支持 - 全功能型运行时库支持,支持异步编程,多线程和协程等等编程模式
- 内置包管理器
- 内置文档生成器
因为开发资源有限,开发计划暂定如下:
- 使用
cmake
对zend VM
进行编译,生成polarphp
定制版的PHP
语言虚拟机 - 语言支持项目,语言测试框架,移植
LLVM
项目的lit
测试框架 - 实现
polarphp
驱动程序,实现从命令行执行PHP
代码 - 对
polarphp
虚拟机进行回归测试,暂定跑通PHP
的语言虚拟机相关回归测试 - 实现
polarphp
的内置函数 - 发布核心虚拟机的
docker
镜像 - 整合
libpdk
运行时框架 - 实现人性化安装,尽量以最少的步骤进行
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_base_env
- polarphp_debug
如果没有问题,我们开始测试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('\php\retrieve_version_str')) {
echo "version str: " . \php\retrieve_version_str() . "\n";
}
if (function_exists('\php\retrieve_major_version')) {
echo "major version: " . \php\retrieve_major_version() . "\n";
}
if (function_exists('\php\retrieve_minor_version')) {
echo "minor version: " . \php\retrieve_minor_version() . "\n";
}
if (function_exists('\php\retrieve_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
,有什么问题,请扫描下面的微信二维码进群交流。
目前我们暂时只针对中国的用户,所以采用了微信和QQ
群的交流方式,下面是二维码,有兴趣的同学可以扫码加入:
PS:扫码请注明来意,比如:学习
polarphp
或者PHP
爱好者
- 语言核心团队
- 标准库团队
- 生态链项目团队
- 文档团队
- 官方网站维护团队
polarphp
在php
语言项目之上进行二次开发,遵守php
项目的协议,详情请看:项目协议
===========================