php的语言引擎,QueryPHP渐进式PHP常驻框架引擎 v1.0.3_weixin_39851261的博客-程序员宅基地

技术标签: php的语言引擎  

QueryPHP 是一款现代化的高性能 PHP 7 常驻框架,以工程师用户体验为历史使命,让每一个 PHP 应用都有一个好框架。

百分之百单元测试覆盖直面 Bug 一剑封喉,基于 Zephir 实现框架常驻,依托 Swoole 生态实现业务常驻,此刻未来逐步渐进。我们的愿景是 USE LEEVEL WITH SWOOLE DO BETTER,让您的业务撑起更多的用户服务。

两年重构,只为更好的自己

QueryPHP 基于一款成立于 2010 年的 PHP 框架 DoYouHaoBaby 开发,继承了上一代产品的优秀之处,彻底革新并进行了长达 2 年重构.

在这个基础上,我们引入了 Laravel、Symfony 等框架现代化先进特性,站在巨人的肩膀上保持创新。

#它是如何工作的?

QueryPHP 是一个渐进式 PHP 常驻框架,我们强调的是一个渐进式,它既可以运行在 php-fpm 场景,也可以将框架核心编译成 C 扩展,同时还支持在 swoole 服务中运行。

#运行在 php-fpm 场景或者 PHP 内置 webserver

事实上,QueryPHP 也是一个普通的 PHP 框架,目前最低版本要求 PHP 7.1.3,我们对环境并没有特别的要求。

PHP ^7.1.3

ext-mbstring 字符处理

ext-openssl 加密组件

我们系统依赖的组件可以通过 composer.json 找到,我们提供了大量开箱即用的功能。

~ $ php leevel server

# => Now visite http://127.0.0.1:9527/

上面就是运行在 PHP 内置 webserver 中,也可以用 nginx 搭建站点。

#框架编译成 C 扩展

我们为了更好的性能,为整个 QueryPHP 的核心开发了一套可选的 C 扩展,它不是必须要安装的。

Leevel 是一个开源 PHP C 扩展开发框架,采用 zephir 编写,是为了解决使用框架带来性能下降的经典矛盾,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本的 QueryPHP 混合使用,将接管 composer 中的 PHP 版本功能。

它是如何做到接管 composer 中的底层核心的呢。

我们访问一个类, composer 根据 psr4 规则去搜索到我们文件而载入,如下的脚本会被载入。

Leevel/Di/Container.php

instance('foo', 'bar');

var_dump($container->make('foo')); // bar

...

如果我们存在一个扩展就提供了这样一个类并随着 PHP 常驻,是不是性能不错,实际上是可以,QueryPHP 选择了 zephir 来实现。

leevel/di/container.zep

实际上会被编译成 C,被最终被编译成 PHP 扩展。

leevel/di/container.zep.c

这样子,不需要修改代码直接提升性能。

#Windows 系统

暂未提供 dll.

#Linux 操作系统

下载源代码.

git clone [email protected]:hunzhiwange/leevel.git

cd ext

编译扩展.

$/path/to/phpize

$./configure --with-php-config=/path/to/php-config

$make && make install

将扩展添加到你的 php.ini, 使用 php -m 查看扩展是否被安装.

extension = leevel.so

#运行在 Swoole 环境中

swoole 的问世对于 PHP 后端来说是一种福音,swoole 4.1 已经开始支持原始 pdo,redis 协程,支持 swoole 势在必行。已经做了一些基础工作,对于第一个版本我们要完善单元测试,所以下一个版本主要支持 swoole。

php leevel swoole:http

WARNING

Swoole 部分在第一个版本被撤下来了,后面回归。

#特性

框架理念 (值得托付的使命感,让每一个 PHP 应用都有一个好框架。)

组件系统 (框架底层由独立的高内聚低耦合组件构成,可以轻松无侵入接入现有系统。)

路由系统 (框架提供 MVC 自动路由并能够智能解析 Restful 请求和基于 OpenApi 3.0 规范的 swagger-php 注解路由,文档路由一步搞定。)

整体解决方案 (框架提供了从缓存、Session、IOC 容器、模板引擎、Ddd ORM 等大量开箱即用的功能,提供了基于 Symfony Console 命令行工具集。)

框架常驻 (Leevel 可选扩展接管底层核心)

业务常驻 (基于 Swoole 4 开发,我们的愿景是少量代码或者无修改,让你的业务撑起更多的用户服务。)

百分之百单元测试覆盖(单元测试一直是国产 PHP 开源项目的痛)

拜师国外现代化框架 (从 Laravel、Symfony 吸收大量特性,也包含其它的框架.)

PHP 7 严格模式 (每一个 PHP 脚本都是 strict_types = 1)

PHP 7 类型提示 (仅可能为每一个方法提供确定的参数类型和返回值类型)

依赖注入 (完整实现,关键 mvc、命令行脚本、事件监听器全部接入 IOC)

领域驱动设计 (在妖怪的 QeePHP 基础上保持创新,提供了 UnitOfWork[事务工作单元]、Repository[仓储]、Specification[查询规约],Entity getter setter[领域实体或叫模型] )

more...

#Todo

QueryPHP 仍然处于开发中,这里有一些目前还不支持、但已经在计划中的特性:

基于 Vue + IView 通用权限系统

完善 Swoole

开发文档

我们欢迎你为 QueryPHP 的开发作出贡献。

#为什么不是...?

#Laravel

Laravel 是一个非常优秀的框架,拥有非常庞大的社区,实际上 QueryPHP 大量吸收了 Laravel 的一些优秀特性。一致依赖 Laravel 性能确实为人诟病,QueryPHP 开发了一个 Leevel 来解决这一部分问题,用 Laravel 没错,QueryPHP 只是其中一个选择。

#Symfony

Symfony 实际上是 PHP 社区事实标准,QueryPHP 底层大量使用 Symfony 的基础组件例如 console、finder 等,Symfony 可以与 QueryPHP 更好地结合。

#ThinkPHP

ThinkPHP 是我最佩服的一个国产 PHP 框架,10 多年来还在持续不断的革新,国内很少有生命力这么久的框架。我在 2010 年就通读了 ThinkPHP 2.0 代码,在后面工作中主要也是使用 ThinkPHP 3 系列,有苦也有乐。加油!

#Phalcon & Yaf

Phalcon 与 Yaf 世界上最快的 PHP 框架,Yaf 很轻,Phalcon 很重,它们都是世界级的框架。

QueryPHP 选择一部分由 PHP 编写,一部分编译成扩选扩展 Leevel。

Leevel 位于 Yaf 和 Phalcon 轻重之间,是一种可选的方案。

ca185ac507ac419685de1fd332d184fa.gif

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39851261/article/details/115744864

智能推荐

jmeter中添加断言_weixin_33728268的博客-程序员宅基地

断言是干什么的?判断业务是否请求成功的利器。选择http请求,右键,断言-响应断言验证获取信息中的请求结果用户名是xiaohei。没有报错,则表示成功。注意,断言不要中文,避免不必要的麻烦!!!转载于:https://www.cnblogs.com/wyhv5/p/9097417.html...

阿里巴巴的业务范畴/文化和价值观_禅与计算机程序设计艺术的博客-程序员宅基地

阿里巴巴集团经营多项业务,另外也从关联公司的业务和服务中取得经营商业生态系统上的支援。业务和关联公司的业务包括:淘宝网、天猫、聚划算、全球速卖通、阿里巴巴国际交易市场、1688、阿里妈妈、阿里云、蚂蚁金服、菜鸟网络等。 业务范畴 阿里巴巴集团经营多项业务,另外也有赖关联公司的业务和服务支持我们数字经济体的运作。阿里巴巴数字经济体的主要业务包括...

从零开始,让你的框架支持CocoaPods_weixin_34375054的博客-程序员宅基地

本文为投稿文章,作者:奴良(简书)这两天一直琢磨着想让自己的一个照片多选框架支持CocoaPods下载安装,就搜了好多资料,但是搜到的资料大多都是最基本的,并没有解决我遇到的问题,问题如下:当自己的框架中用到了xib及图片资源的话,怎么解决在CocoaPods下载安装后xib初始化失败及图片资源不显示的问题。那么我们从第一步开始,一步一步来使自己的框架支持CocoaPods安装(关于如...

mybatis 添加记录后及时获得主键ID_松松面包的博客-程序员宅基地

<insert id="insertSelective" parameterType="com.st.ss.model.User" > <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() AS ID </selectKey>

POI读写大数据量excel,解决超过几万行而导致内存溢出的问题_狮子看电视的博客-程序员宅基地

1. Excel2003与Excel2007两个版本的最大行数和列数不同,2003版最大行数是65536行,最大列数是256列,2007版及以后的版本最大行数是1048576行,最大列数是16384列。excel2003是以二进制的方式存储,这种格式不易被其他软件读取使用;而excel2007采用了基于XML的ooxml开放文档标准,ooxml使用XML和ZIP技术结合进行文件存储,XML...

Android笔记1——Android SDK自带的工具和命令_薇洛的打火机的博客-程序员宅基地

1、Android命令位于SDK安装目录的tools子目录下,用于创建、管理AVD(Android Virtual Device),以及创建和更新Android项目。需要和子命令配合使用,如:android create avd就用于创建AVD,常用子命令有listlist avdlist targetcreate avddelete avdmove avdup

随便推点

android常用框架源码解析,android Fragmentation框架源码全面解析一_weixin_39539002的博客-程序员宅基地

Fragmentaion框架是一个很优秀的框架,我们有2个项目都使用过,目前无不良反应,BUG呢还是有一些,不过不妨碍它的优秀。项目地址:https://github.com/YoKeyword/Fragmentation 点击打开链接 关注好几千,群众的眼光是雪亮的。它有啥作用呢?Fragment是可以让你的app纵享丝滑的设计,如果你的app想在现在基础上性能大幅度提高,并且占用内存降低...

IO字符流五种方式复制文件_diaozong8461的博客-程序员宅基地

1 package com.qyh.io; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.FileReader; 6 import java.io.FileWriter; 7 import java.io.IOExcep...

简单两个矩阵如何用计算机运算,教你使用excel做矩阵运算_方大凯的博客-程序员宅基地

教你使用excel做矩阵运算发布时间:2019-07-11 10:59来源:互联网当前栏目:电脑教程Excel强大的计算功能不仅可以实现简单的四步操作,还可以实现阵列和矩阵计算。1数组和矩阵定义矩阵不是数字,而是数组。在Excel中,数组占用单位字段,单位字段由大括号表示,例如{A1:C3},以区别于正常单位字段A1:C3。首先设置单元格字段,然后按Shift + Ctrl + Enter。自动生...

html5 刮刮乐 源码,HTML5 canvas实现刮刮乐功能_尚爱兰的博客-程序员宅基地

最近比较闲,除了在群里给大家交流交流,就没啥学习重心。看了论坛里的各种帖子,各种问题满天飞,这里我就整理了2个h5 canvas的demo,分享给大家!使用html5的canvas实现刮刮乐功能舍不得买2块钱的刮刮乐,就只能写个类似的功能过过彩票瘾了!布局background-color:lightskyblue;border-radius:5px;float:left;"&gt;text-ali...

Java重写和重载、动态绑定和静态绑定、覆盖和重载的区别_sugar high的博客-程序员宅基地_重载是动态绑定吗

共同点:都是用于方法的不同点:重载:函数名必须相同,返回值可以不同,参数一定不同,对方法参数的重载。重写:函数名必须相同,返回值可以不同,参数必须相同,对方法内容的覆盖。重载又叫静态绑定,编译时的多态,在编译时就确定了使用哪种参数的方法。重写又叫动态绑定,运行时的多态,在运行时确定使用哪个方法。注:被final,pirvate修饰的方法不可重写!...

深度学习(四)卷积神经网络-卷积神经网络(3) -Andrew Ng_小飞猪666的博客-程序员宅基地

一、基础知识1.1目标定位前两节课程中,我们介绍的是利用CNN模型进行图像分类。除此之外,本周课程将继续深入介绍目标定位和目标检测(包含多目标检测)。 图片分类问题你已经并不陌生了,如:输入一张图片到多层卷积神经网络。这就是卷积神经网络,它会输出一个特征向量,并反馈给 softmax 单元来预测图片类...

推荐文章

热门文章

相关标签