详情介绍
polarphp是一个全新的PHP语言的运行时环境,基于目前最新的zend virtual machine进行打造,支持最新的语言规范,同时提供了自己的运行时标准库 (libpdk)。
简单来说polarphp之于PHP语言的关系跟NodeJS之于Javascript语言一样,NodeJS在v8引擎基础之上进行打造,为Javascript提供了一个在服务端运行的环境。同样polarphp也在zend engine的基础上进行打造,实现了一个除Web开发之外的一个全新的运行环境。
项目官网库:
https://gitee.com/polarphp/polarphp
https://github.com/polarphp/polarphp
欢迎小伙伴们多多star ^ _ ^
为什么发起 polarphp 项目
随着Go和NodeJS的强势崛起,PHP的市场份额逐渐被蚕食,而PHP官方仍然坚守在Web编程领域,有些东西越是想守住就越守不住。polarphp借鉴NodeJS和Go的相关特性对zendVM重新封装,去掉PHP一些古老弃用的特性和强Web属性,通过实现一套新的运行时框架libpdk,将PHP语言打造成为一门真正的通用性脚本语言,赋能PHP,让其拥有异步编程,协程,线程,内置的unicode支持,标准的文件IO等等特性,让PHP程序员不仅仅能做web应用,也能从容面对真正的服务端应用。
polarphp 提供的基础设施
直接面向终端,去掉SAPI从而更好的实现服务端环境。
规范化OPCODE形成规范,从而提供一种类似pyc文件的预编译机制。
提供原生多线程支持,借鉴Java在多线程方面的编程范式。
提供原生异步IO支持。
提供针对字符串的unicode支持。
提供一种全新的包组织方式,内置包依赖管理工具,类似Cargo和npm。
提供内置的API文档生成工具。
polarphp 大致架构
项目主要由三部分构成,主要有如下三个子模块
polarvm
zendAPI
libpdk
这个模块大致的关系如下:
polarvm <=> zendAPI <=> libpdk
polarvm 介绍
现阶段实现对zend engine的封装,实现最基本的PHP执行环境,比如实现:
语言解析,OPCODE的执行。
实现基础运行环境,实现变量操作,数组操作,类加载机制,语言反射等等。
zend engine的初始化,实现语言引擎与终端的链接,实现语言引擎对标准输入输出的直接控制。
实现语言引擎与标准库之间的回调机制。
zendAPI 介绍
做过PHP扩展的朋友应该知道,在我们开发扩展的时候,zend engine的很多接口都是通过宏调用的方式提供的,类型不安全,出错了不好调试,而且有些宏还长的特别像,同时操作数组的时候特别繁琐。zend engine的gc是通过引用计数实现的,同时C语言又没有什么从语言层面帮我们管理计数的机制,从而我们在写扩展的时候管理内存不仅很繁琐而且一不小心就会造成内存泄露。特别是将写时复制和PHP变量之间的引用一起使用的时候,非常让能头痛。
如果我们的标准库如果直接基于原生的zend engine的接口,势必扩展性,可维护性会受到严重影响,特别是目前polarvm是基于zend engine二次开发的可观情况下。所以在语言引擎和标准库之间实现一个屏蔽层,对下实现对zend engine原生接口的封装,对上提供一套相对稳定且简单的面向对象的CPP编程接口。
zendAPI 提供如下的特性:
完全面向对象,对Zend Engine API进行二次定义
使用现代的C++11语法进行开发,便于维护
最大化屏蔽PHP版本对扩展开发的影响,zendAPI将对Zend Engine API不同版本带来的差异屏蔽掉
高覆盖的单元测试,保证代码质量
在封装的时候,尽最大能力保证性能
致力于项目库的二进制兼容
libpdk 介绍
libpdk 的定位是polarphp语言环境中的标准库,PDK是PHP Development Kit几个单词的缩写。在设计上参考Java的JDK的模块组织风格,为PHP提供一套严谨并且功能强大的运行时标准库,让实现服务端高效编程成为可能,比如使用PHP实现类似Netty那样的事件驱动的网络框架,或者CoreDNS那样的应用项目成为可能。同时也可以让开发终端程序比如npm,Cargo和PM2等等类似的程序更加便捷。在Web领域,libpdk让polarphp能够脱离SAPI直接像go那样自己对端口进行监听,从而实现gin那样的轻量级的服务框架更加方便,底层基于事件循环模型和多线程模型。
项目库地址: https://github.com/polarphp/libpdk
PDK计划了如下几个模块
Base module (基础模块,实现最基本的功能,比如输入输出,文件系统,进程与线程,事件模型等等)
Network module(网络模块,在基础模块之上,实现一套高性能的网络框架,让编写服务端系统更加便捷)
Web module (Web模块,实现常见的Http协议,提供一个类型Serlet的Web运行时容器)
GUI module (用户界面模块,未来实现,让PHP具备编写常见的客户端系统,基于openGL实现)
polarphp 的开发计划
因为开发资源有限,开发计划暂定如下:
使用cmake对zend VM进行编译,生成polarphp定制版的PHP语言虚拟机。
语言支持项目,语言测试框架,移植LLVM项目的lit测试框架。
实现polarphp驱动程序,实现从命令行执行PHP代码。
对polarphp虚拟机进行回归测试,暂定跑通PHP的语言虚拟机相关回归测试。
实现polarphp的内置函数。
发布核心虚拟机的docker镜像。
整合libpdk运行时框架。
实现人性化安装,尽量以最少的步骤进行polarphp的安装。
实现包管理器。
实现语言配套小工具,比如文档生成工具等等。
polarphp 优先支持的操作系统
debain
centos
ubuntu
openSUSE
macOS
未来打算原生支持Windows操作系统,目前正在进行知识储备。
polarphp 目前的现状
目前项目处于一个非常前期的阶段,通过docker镜像来实现项目的迭代发布,目前主要是我一个人在业余时间进行开发,欢迎大家一起玩。2019年一个重要的任务就是完善polarphp标准库libpdk,以及实现在主流的Linux操作系统上稳定的运行。
下载地址
人气源码
相关文章
-
Linkreate wordpress AI智能插件 v2.2.9wordpress文章内容、图片生成免费AI插件、AI前端交互、批量采集文章,接入兼容OpenAI、KIMI、文言一心等国内外AI模型。欢迎需要的朋友下载使用...
-
wordpress文章自动添加标签TAGs插件 v2.2 (Auto Tagging Plugin)一款专为WordPress网站设计的插件,旨在帮助用户根据自定义标签库自动为文章添加标签,你可以选择匹配文章标题、内容,甚至同时匹配两者,插件根据标签在文章中的出现次数来...
-
wordPress AI插件工具 v1.9wordpress文章内容、图片生成免费AI插件、AI前端交互、批量采集文章,接入兼容OpenAI、KIMI、文言一心等国内外AI模型...
-
妍怡家政小程序上门服务系统(前端+后端) v2.5妍怡家政小程序采用think PHP+uniapp+Node.js开发,是一种基于微信平台的轻量级应用,这款源码不仅能够帮助家政服务提供商快速搭建自己的线上平台,还能为用户提供更加便捷...
-
DouPHP微信小程序管理系统 v1.8 Release 20250415DouPHP小程序管理系统基于PHP+MYSQL架构的,可用于开发各类微信小程序。功能模块化安装,可以根据自己的需要安装所需模块,欢迎需要的朋友下载使用...
-
多个微信小程序源码合集 v1.0微信小程序是一种轻量级的应用开发平台,由腾讯公司推出,主要应用于移动端,旨在提供便捷的用户体验,无需下载安装即可在微信内使用...
-
企孟CRM客户管理系统 v2.1.3企孟CRM客户管理系统,采用基于WEB的企业计算,采用PHP+MySQL进行开发,性能稳定可靠,欢迎需要的朋友下载使用...
-
Mtab书签 v1.2.6mTab 新标签页--一个免费无广告的组件式浏览器主页。 多端同步、美观易用的在线导航和新标签页工具,自主研发免费使用,帮助您高效管理网页和应用,更有便携好玩的小组件供...
-
魔众帮助中心(多语言)系统 v1.0.0魔众帮助中心(多语言)系统是一款专业的多语言在线支持和帮助工具,为用户的业务提供全球化的客户支持解决方案,欢迎需要的朋友下载使用...
-
CDN静态资源库搭建源码 v1.0.0类似staticCDN站点的CDN静态文件资源管理系统,可以搭建自己的CDN静态资源站点,欢迎需要的朋友下载使用...
下载声明
☉ 解压密码:www.jb51.net 就是本站主域名,希望大家看清楚,[ 分享码的获取方法 ]可以参考这篇文章
☉ 推荐使用 [ 迅雷 ] 下载,使用 [ WinRAR v5 ] 以上版本解压本站软件。
☉ 如果这个软件总是不能下载的请在评论中留言,我们会尽快修复,谢谢!
☉ 下载本站资源,如果服务器暂不能下载请过一段时间重试!或者多试试几个下载地址
☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持!
☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。
☉ 本站提供的polarphp v0.0.1 alpha 全新PHP运行时环境资源来源互联网,版权归该下载资源的合法拥有者所有。

























