以下是【會員:墨子於】分享的內(nèi)容全文:
QueryPHP 是一款現(xiàn)代化的高性能 PHP 7 常駐框架,以工程師用戶體驗為歷史使命,讓每一個 PHP 應(yīng)用都有一個好框架。
百分之百單元測試覆蓋直面 Bug 一劍封喉,基于 Zephir 實現(xiàn)框架常駐,依托 Swoole 生態(tài)實現(xiàn)業(yè)務(wù)常駐,此刻未來逐步漸進(jìn)。我們的愿景是 USE LEEVEL WITH SWOOLE DO BETTER,讓您的業(yè)務(wù)撐起更多的用戶服務(wù)。
兩年重構(gòu),只為更好的自己
QueryPHP 基于一款成立于 2010 年的 PHP 框架 DoYouHaoBaby 開發(fā),繼承了上一代產(chǎn)品的優(yōu)秀之處,徹底革新并進(jìn)行了長達(dá) 2 年重構(gòu).
在這個基礎(chǔ)上,我們引入了 Laravel、Symfony 等框架現(xiàn)代化先進(jìn)特性,站在巨人的肩膀上保持創(chuàng)新。
#它是如何工作的?
QueryPHP 是一個漸進(jìn)式 PHP 常駐框架,我們強(qiáng)調(diào)的是一個漸進(jìn)式,它既可以運(yùn)行在 php-fpm 場景,也可以將框架核心編譯成 C 擴(kuò)展,同時還支持在 swoole 服務(wù)中運(yùn)行。
#運(yùn)行在 php-fpm 場景或者 PHP 內(nèi)置 webserver
事實上,QueryPHP 也是一個普通的 PHP 框架,目前最低版本要求 PHP 7.1.3,我們對環(huán)境并沒有特別的要求。
PHP ^7.1.3
ext-mbstring 字符處理
ext-openssl 加密組件
我們系統(tǒng)依賴的組件可以通過 composer.json 找到,我們提供了大量開箱即用的功能。
~ $ php leevel server
# => Now visite http://127.0.0.1:9527/
上面就是運(yùn)行在 PHP 內(nèi)置 webserver 中,也可以用 nginx 搭建站點。
#框架編譯成 C 擴(kuò)展
我們?yōu)榱烁玫男阅?,為整個 QueryPHP 的核心開發(fā)了一套可選的 C 擴(kuò)展,它不是必須要安裝的。
Leevel 是一個開源 PHP C 擴(kuò)展開發(fā)框架,采用 zephir 編寫,是為了解決使用框架帶來性能下降的經(jīng)典矛盾,Leevel 是為了解決 QueryPHP 性能而開發(fā),可以與同版本的 QueryPHP 混合使用,將接管 composer 中的 PHP 版本功能。
它是如何做到接管 composer 中的底層核心的呢。
我們訪問一個類, composer 根據(jù) psr4 規(guī)則去搜索到我們文件而載入,如下的腳本會被載入。
Leevel/Di/Container.php
instance('foo', 'bar');
var_dump($container->make('foo')); // bar
...
如果我們存在一個擴(kuò)展就提供了這樣一個類并隨著 PHP 常駐,是不是性能不錯,實際上是可以,QueryPHP 選擇了 zephir 來實現(xiàn)。
leevel/di/container.zep
實際上會被編譯成 C,被最終被編譯成 PHP 擴(kuò)展。
leevel/di/container.zep.c
這樣子,不需要修改代碼直接提升性能。
#Windows 系統(tǒng)
暫未提供 dll.
#Linux 操作系統(tǒng)
下載源代碼.
git clone git@github.com:hunzhiwange/leevel.git
cd ext
編譯擴(kuò)展.
$/path/to/phpize
$./configure --with-php-config=/path/to/php-config
$make && make install
將擴(kuò)展添加到你的 php.ini, 使用 php -m 查看擴(kuò)展是否被安裝.
extension = leevel.so
#運(yùn)行在 Swoole 環(huán)境中
swoole 的問世對于 PHP 后端來說是一種福音,swoole 4.1 已經(jīng)開始支持原始 pdo,redis 協(xié)程,支持 swoole 勢在必行。已經(jīng)做了一些基礎(chǔ)工作,對于第一個版本我們要完善單元測試,所以下一個版本主要支持 swoole。
php leevel swoole:http
WARNING
Swoole 部分在第一個版本被撤下來了,后面回歸。
#特性
框架理念 (值得托付的使命感,讓每一個 PHP 應(yīng)用都有一個好框架。)
組件系統(tǒng) (框架底層由獨立的高內(nèi)聚低耦合組件構(gòu)成,可以輕松無侵入接入現(xiàn)有系統(tǒng)。)
路由系統(tǒng) (框架提供 MVC 自動路由并能夠智能解析 Restful 請求和基于 OpenApi 3.0 規(guī)范的 swagger-php 注解路由,文檔路由一步搞定。)
整體解決方案 (框架提供了從緩存、Session、IOC 容器、模板引擎、Ddd ORM 等大量開箱即用的功能,提供了基于 Symfony Console 命令行工具集。)
框架常駐 (Leevel 可選擴(kuò)展接管底層核心)
業(yè)務(wù)常駐 (基于 Swoole 4 開發(fā),我們的愿景是少量代碼或者無修改,讓你的業(yè)務(wù)撐起更多的用戶服務(wù)。)
百分之百單元測試覆蓋(單元測試一直是國產(chǎn) PHP 開源項目的痛)
拜師國外現(xiàn)代化框架 (從 Laravel、Symfony 吸收大量特性,也包含其它的框架.)
PHP 7 嚴(yán)格模式 (每一個 PHP 腳本都是 strict_types = 1)
PHP 7 類型提示 (僅可能為每一個方法提供確定的參數(shù)類型和返回值類型)
依賴注入 (完整實現(xiàn),關(guān)鍵 mvc、命令行腳本、事件監(jiān)聽器全部接入 IOC)
領(lǐng)域驅(qū)動設(shè)計 (在妖怪的 QeePHP 基礎(chǔ)上保持創(chuàng)新,提供了 UnitOfWork[事務(wù)工作單元]、Repository[倉儲]、Specification[查詢規(guī)約],Entity getter setter[領(lǐng)域?qū)嶓w或叫模型] )
more...
#Todo
QueryPHP 仍然處于開發(fā)中,這里有一些目前還不支持、但已經(jīng)在計劃中的特性:
基于 Vue + IView 通用權(quán)限系統(tǒng)
完善 Swoole
開發(fā)文檔
我們歡迎你為 QueryPHP 的開發(fā)作出貢獻(xiàn)。
#為什么不是...?
#Laravel
Laravel 是一個非常優(yōu)秀的框架,擁有非常龐大的社區(qū),實際上 QueryPHP 大量吸收了 Laravel 的一些優(yōu)秀特性。一致依賴 Laravel 性能確實為人詬病,QueryPHP 開發(fā)了一個 Leevel 來解決這一部分問題,用 Laravel 沒錯,QueryPHP 只是其中一個選擇。
#Symfony
Symfony 實際上是 PHP 社區(qū)事實標(biāo)準(zhǔn),QueryPHP 底層大量使用 Symfony 的基礎(chǔ)組件例如 console、finder 等,Symfony 可以與 QueryPHP 更好地結(jié)合。
#ThinkPHP
ThinkPHP 是我最佩服的一個國產(chǎn) PHP 框架,10 多年來還在持續(xù)不斷的革新,國內(nèi)很少有生命力這么久的框架。我在 2010 年就通讀了 ThinkPHP 2.0 代碼,在后面工作中主要也是使用 ThinkPHP 3 系列,有苦也有樂。加油!
#Phalcon & Yaf
Phalcon 與 Yaf 世界上最快的 PHP 框架,Yaf 很輕,Phalcon 很重,它們都是世界級的框架。
QueryPHP 選擇一部分由 PHP 編寫,一部分編譯成擴(kuò)選擴(kuò)展 Leevel。
Leevel 位于 Yaf 和 Phalcon 輕重之間,是一種可選的方案。
1.軟件源碼推廣展示:目的展示軟件相關(guān)功能,接收技術(shù)學(xué)習(xí)者測試、測評;
2.教程課程信息展示:展示課程信息,傳授課程各階段內(nèi)容;
3.設(shè)計素材圖片展示:展示素材設(shè)計理念、思維方式、傳播設(shè)計理念;
4.福利優(yōu)惠信息展示:分享各類最新的福利信息,各種優(yōu)惠信息展示;
以上分享目的僅供學(xué)習(xí)、參考使用,請勿用于其他用途,如果想商業(yè)使用或者代理,請自行聯(lián)系版權(quán)方獲取授權(quán)。任何未獲取授權(quán)的商業(yè)使用與本站無關(guān),請自行承擔(dān)相應(yīng)責(zé)任。
本站不存儲任何資源文件,敬請周知!
如果您認(rèn)為本頁信息內(nèi)容侵犯了您的相關(guān)權(quán)益(包含但不限于:著作權(quán)、首發(fā)權(quán)、隱私權(quán)等權(quán)利),或者您認(rèn)為自己是此信息的權(quán)利人但是此信息不是自己發(fā)布的,可以直接版權(quán)舉報投訴,我們會根據(jù)網(wǎng)站注冊協(xié)議、資源分享協(xié)議等協(xié)議處理,以保護(hù)您的合法權(quán)益。
本網(wǎng)站采用 BY-NC-SA 協(xié)議進(jìn)行授權(quán) 轉(zhuǎn)載請注明原文鏈接:QueryPHP漸進(jìn)式PHP常駐框架引擎 v1.0 rc3

侵權(quán)舉報/版權(quán)申訴



