RapPHP 正式发布,支持 Swoole 的全 Web 开发框架

景颢
 景颢
发布于 2018年09月07日
收藏 19

RapPHP 开发框架现在正式向全网进行开源,经过我们内部一定时间的开发升级,当前版本已迭代到 v2.0.6,当前框架包含完整的开发 php 项目需要的各个组件和特性,并已经过多个项目的验证。

RapPHP 是什么

RapPHP 框架提供了全面的 IOC,AOP的底层支持,架构设计简洁而有扩展性,开发灵活而有设计感,RapPHP提供了完整的 Web开发需要的核心组件;同时 RapPHP支持 SWOOLE和传统(lamp,lnmp)双部署方案,可以通过 SWOOLE 提供常驻内存的高性能 php 运行环境;

主要特性:

  • 高性能:支持传统lamp(lnmp)部署方案,同时支持rapphp+Swoole引擎部署方案;

  • IOC:真正的依赖注入,控制反转,开始更高级的设计思想,让你的代码更优雅,可控;

  • AOP:面向切面编程,代码低耦合;

  • MVC 架构:简单好用的 MVC 架构,配置简单,程序可读性更高;

  • ORM:独特SQL 构造方法,Record 数据库模型,二级缓存机制,数据库操作更加简单,高效;

  • 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/

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:RapPHP 正式发布,支持 Swoole 的全 Web 开发框架
加载中

精彩评论

宇润
宇润
imi框架发来贺电!
J
Jason909
名字有什么含义吗?受了中国新说唱影响?
景颢
景颢

引用来自“weijer”的评论

swoole 框架,如雨后春笋啊!
该项目,同时支持不使用swoole部署,只是设计初期就在各个方面兼容了 swoole 的写法,我们在开发期基本还是用的 nginx, 方便,预发,生产期是用的swoole环境

最新评论(22

宇润
宇润

引用来自“李虎头”的评论

我到现在也没找到一个基于swoole的tcp框架

引用来自“宇润”的评论

IMI支持TCP、UDP、WebSocket、Http,看看imi-demo里的tcp简易聊天室:https://gitee.com/yurunsoft/imi-demo/blob/master/TcpDemo/Tcp2/Controller/Test.php

引用来自“李虎头”的评论

支持tcp和udp都是swoole自带的,你这个框架只是简单封装,还不能达到开箱即用的地步
只需要跟http一样,用控制器就能开发
李虎头
李虎头

引用来自“李虎头”的评论

我到现在也没找到一个基于swoole的tcp框架

引用来自“宇润”的评论

IMI支持TCP、UDP、WebSocket、Http,看看imi-demo里的tcp简易聊天室:https://gitee.com/yurunsoft/imi-demo/blob/master/TcpDemo/Tcp2/Controller/Test.php
支持tcp和udp都是swoole自带的,你这个框架只是简单封装,还不能达到开箱即用的地步
纵度飞行
纵度飞行
没用过
景颢
景颢

引用来自“OSC_FqssbC”的评论

支持数据库连接池吗
暂时不支持的 swoole 里数据库是每个进程一个连接 是长链接
OSC_FqssbC
OSC_FqssbC
支持数据库连接池吗
景颢
景颢

引用来自“高酒疯”的评论

QQ群链接失效了 大佬

引用来自“景颢”的评论

你哪边看到 qq 群的啊
在线交流群 QQ群:677411689(欢迎加入探讨)
景颢
景颢

引用来自“高酒疯”的评论

QQ群链接失效了 大佬
你哪边看到 qq 群的啊
高酒疯
高酒疯
QQ群链接失效了 大佬
高酒疯
高酒疯
支持传统lamp(lnmp)部署方案,同时支持rapphp+Swoole引擎部署方案 ?????这么强大啊!!!!!!!!!!!
景颢
景颢

引用来自“李虎头”的评论

我到现在也没找到一个基于swoole的tcp框架

引用来自“宇润”的评论

IMI支持TCP、UDP、WebSocket、Http,看看imi-demo里的tcp简易聊天室:https://gitee.com/yurunsoft/imi-demo/blob/master/TcpDemo/Tcp2/Controller/Test.php
我们公司现在也使用 rapphp +swoole 做了即时聊天了 嘿嘿
返回顶部
顶部