RapPHP 開發框架如今正式向全網進行開源,通過咱們內部必定時間的開發升級,當前版本已迭代到 v2.0.6,當前框架包含完整的開發 php 項目須要的各個組件和特性,並已通過多個項目的驗證。php
RapPHP 框架提供了全面的 IOC,AOP的底層支持,架構設計簡潔而有擴展性,開發靈活而有設計感,RapPHP提供了完整的 Web開發須要的核心組件;同時 RapPHP支持 SWOOLE和傳統(lamp,lnmp)雙部署方案,能夠經過 SWOOLE 提供常駐內存的高性能 php 運行環境;git
官網 http://rapphp.com/github
文檔 http://doc.magcloud.cc/web
github https://github.com/tengzhinei/rapphp數據庫
高性能:支持傳統lamp(lnmp)部署方案,同時支持rapphp+Swoole引擎部署方案;編程
IOC:真正的依賴注入,控制反轉,開始更高級的設計思想,讓你的代碼更優雅,可控;json
AOP:面向切面編程,代碼低耦合;緩存
MVC 架構:簡單好用的 MVC 架構,配置簡單,程序可讀性更高;服務器
ORM:獨特SQL 構造方法,Record 數據庫模型,二級緩存機制,數據庫操做更加簡單,高效;websocket
SWOOLE:不修改代碼的狀況下一鍵啓用 SWOOLE,PHP運行性能全面提高;
上手快:框架竟然使用了一些比較高級的設計思想,可是再框架內使用都特別簡單
支持異步任務,定時任務,websocket等高級功能
包含緩存, 文件存儲,日誌等多鍾經常使用功能;
有了 IOC,AOP,SWOOLE神器,能夠拉近和編譯性語言(JAVA等)的性能;
下面是關於 Spring(JAVA 框架) 中的 IOC和AOP 的解釋
對象依賴注入,系統內對象絕對單例
class ToolController{ /** * @var Connection */ private $connection; /** * @var TenantService */ private $tenantService; public function _initialize(Connection $connection,TenantService $tenantService){ $this->connection=$connection; $this->tenantService=$tenantService; } }
前置切面,後置切面,環繞切面, AOP 支持完整可控
在UserLogic調用saveUser,delUser方法前調用UserLogicTestAop的testBefore方法 AopBuild::before(UserLogic::class) ->methods(["saveUser","delUser"]) ->wave(UserLogicTestAop::class) ->using("testBefore") ->addPoint(); //在UserLogic調用方法以save或del開頭的方法前調用UserLogicTestAop的testAfter方法 AopBuild::after(UserLogic::class) ->methodsStart(["save","del"]) ->wave(UserLogicTestAop::class) ->using("testAfter") ->addPoint();
MVC 路徑自動查找,參數自動綁定,返回(頁面, json)自動解析
class IndexController { public function index($name, Response $response) { $response->assign('name',$name) return 'index'; } public function json($name) { return ['success'=>true,'data'=>$name]; } }
數據模型,增刪改查,二級緩存機制,數據庫操做輕鬆搞定
$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 服務器,異步任務,定時任務,websocket 輕鬆搞定
'swoole_http'=>[ 'ip'=>'0.0.0.0', //正常不須要修改 'port'=>9501, //默認使用9501端口 'document_root'=>ROOT_PATH, 'enable_static_handler'=>false, //是否能夠訪問文件 正常不能夠 'worker_num'=>20, //默認開啓多少worker進程 'task_worker_num'=>4, //默認開啓幾個 task 進程 'task_max_request'=>0 //訪問多少次釋放worker進程 ], //啓動服務 php index.php http //異步任務 Task::deliver(MyTaskService::class,'task',['key'=>100,'name'=>'test']); //定時任務 Timer::after('/test/a',['a'=>'1'],10,['tent-header'=>'test']);
SWOOLE https://swoole.com/