RapPHP為效率而生的 PHP 框架
RapPHP 是什么
RapPHP 框架提供了全面的 IOC,AOP 的底層支持,架構(gòu)設(shè)計(jì)簡(jiǎn)潔而有擴(kuò)展性,開(kāi)發(fā)靈活而有設(shè)計(jì)感,RapPHP 提供了完整的 Web 開(kāi)發(fā)需要的核心組件;同時(shí) RapPHP 支持 SWOOLE 和傳統(tǒng)(lamp,lnmp)雙部署方案,可以通過(guò) SWOOLE 提供常駐內(nèi)存的高性能 php 運(yùn)行環(huán)境;
-
官網(wǎng) http://rapphp.com/
主要特性:
-
高性能:支持傳統(tǒng)lamp(lnmp)部署方案,同時(shí)支持rapphp+Swoole引擎部署方案;
-
IOC:真正的依賴注入,控制反轉(zhuǎn),開(kāi)始更高級(jí)的設(shè)計(jì)思想,讓你的代碼更優(yōu)雅,可控;
-
AOP:面向切面編程,代碼低耦合;
-
MVC 架構(gòu):簡(jiǎn)單好用的 MVC 架構(gòu),配置簡(jiǎn)單,程序可讀性更高;
-
ORM:獨(dú)特SQL 構(gòu)造方法,Record 數(shù)據(jù)庫(kù)模型,二級(jí)緩存機(jī)制,數(shù)據(jù)庫(kù)操作更加簡(jiǎn)單,高效;
-
SWOOLE:不修改代碼的情況下一鍵啟用 SWOOLE,PHP運(yùn)行性能全面提升;
-
上手快:框架居然使用了一些比較高級(jí)的設(shè)計(jì)思想,但是再框架內(nèi)使用都特別簡(jiǎn)單
-
支持異步任務(wù),定時(shí)任務(wù),websocket等高級(jí)功能
-
包含緩存, 文件存儲(chǔ),日志等多鐘常用功能;
有了 IOC,AOP,SWOOLE神器,可以拉近和編譯性語(yǔ)言(JAVA等)的性能;
名詞解釋
下面是關(guān)于 Spring(JAVA 框架) 中的 IOC和AOP 的解釋
IOC https://www.zhihu.com/question/23277575/answer/169698662
AOP https://www.zhihu.com/question/24863332/answer/48376158
IOC
對(duì)象依賴注入,系統(tǒng)內(nèi)對(duì)象絕對(duì)單例
class ToolController{
/**
* @var Connection
*/
private $connection;
/**
* @var TenantService
*/
private $tenantService;
public function _initialize(Connection $connection,TenantService $tenantService){
$this->connection=$connection;
$this->tenantService=$tenantService;
}
}
AOP
前置切面,后置切面,環(huán)繞切面, AOP 支持完整可控
在UserLogic調(diào)用saveUser,delUser方法前調(diào)用UserLogicTestAop的testBefore方法
AopBuild::before(UserLogic::class)
->methods(["saveUser","delUser"])
->wave(UserLogicTestAop::class)
->using("testBefore")
->addPoint();
//在UserLogic調(diào)用方法以save或del開(kāi)頭的方法前調(diào)用UserLogicTestAop的testAfter方法
AopBuild::after(UserLogic::class)
->methodsStart(["save","del"])
->wave(UserLogicTestAop::class)
->using("testAfter")
->addPoint();
MVC
MVC 路徑自動(dòng)查找,參數(shù)自動(dòng)綁定,返回(頁(yè)面, json)自動(dòng)解析
class IndexController
{
public function index($name, Response $response)
{
$response->assign('name',$name)
return 'index';
}
public function json($name)
{
return ['success'=>true,'data'=>$name];
}
}
ORM
數(shù)據(jù)模型,增刪改查,二級(jí)緩存機(jī)制,數(shù)據(jù)庫(kù)操作輕松搞定
$select = Good::select("g.*") -> order("rank desc");
$select -> join("good_tag gt",'gt.good_id=g.id') -> where("tag_id",$tag);
$data = $select -> cache() -> page($page,$step);
DB::runInTrans(function() {
$user = User::getLock(1);
$user -> name = 'tengzhinei';
$user -> save();
});
SWOOLE
一鍵啟動(dòng) swoole 服務(wù)器,異步任務(wù),定時(shí)任務(wù),websocket 輕松搞定
'swoole_http'=>[
'ip'=>'0.0.0.0', //正常不需要修改
'port'=>9501, //默認(rèn)使用9501端口
'document_root'=>ROOT_PATH,
'enable_static_handler'=>false, //是否可以訪問(wèn)文件 正常不可以
'worker_num'=>20, //默認(rèn)開(kāi)啟多少worker進(jìn)程
'task_worker_num'=>4, //默認(rèn)開(kāi)啟幾個(gè) task 進(jìn)程
'task_max_request'=>0 //訪問(wèn)多少次釋放worker進(jìn)程
],
//啟動(dòng)服務(wù)
php index.php http
//異步任務(wù)
Task::deliver(MyTaskService::class,'task',['key'=>100,'name'=>'test']);
//定時(shí)任務(wù)
Timer::after('/test/a',['a'=>'1'],10,['tent-header'=>'test']);
安利
SWOOLE https://swoole.com/
