RapPHP 支持 Swoole 的全 Web 開發框架

RapPHP 開發框架如今正式向全網進行開源,通過咱們內部必定時間的開發升級,當前版本已迭代到 v2.0.6,當前框架包含完整的開發 php 項目須要的各個組件和特性,並已通過多個項目的驗證。php

RapPHP 是什麼

RapPHP 框架提供了全面的 IOC,AOP的底層支持,架構設計簡潔而有擴展性,開發靈活而有設計感,RapPHP提供了完整的 Web開發須要的核心組件;同時 RapPHP支持 SWOOLE和傳統(lamp,lnmp)雙部署方案,能夠經過 SWOOLE 提供常駐內存的高性能 php 運行環境;git

主要特性:

  • 高性能:支持傳統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 的解釋

IOC

對象依賴注入,系統內對象絕對單例

class ToolController{

    /**
     * @var Connection
     */
    private $connection;
    /**
     * @var TenantService
     */
    private $tenantService;

    public function _initialize(Connection $connection,TenantService $tenantService){
        $this->connection=$connection;
        $this->tenantService=$tenantService;
    }
}

AOP

前置切面,後置切面,環繞切面, 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

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];
    }
}

ORM

數據模型,增刪改查,二級緩存機制,數據庫操做輕鬆搞定

$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

一鍵啓動 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/

相關文章
相關標籤/搜索