RapPHP 为效率而生的 PHP 框架开源项目

我要开发同款
匿名用户2018年09月07日
53阅读
开发技术PHP
所属分类Web应用开发、Web框架
授权协议Apache

作品详情

RapPHP是什么

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

官网 https://rapphp.com/

文档 https://doc.magcloud.cc/

github https://github.com/tengzhinei/rapphp

主要特性:

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

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

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

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

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

SWOOLE:不修改代码的情况下一键启用SWOOLE,PHP运行性能全面提升;

上手快:框架居然使用了一些比较高级的设计思想,但是再框架内使用都特别简单

支持异步任务,定时任务,websocket等高级功能

包含缓存,文件存储,日志等多钟常用功能;

有了IOC,AOP,SWOOLE神器,可以拉近和编译性语言(JAVA等)的性能;

名词解释

下面是关于Spring(JAVA框架)中的IOC和AOP的解释IOC https://www.zhihu.com/question/23277575/answer/169698662AOP https://www.zhihu.com/question/24863332/answer/48376158

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/

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论