RapPHP是什么
RapPHP框架提供了全面的IOC,AOP的底层支持,架构设计简洁而有扩展性,开发灵活而有设计感,RapPHP提供了完整的Web开发需要的核心组件;同时RapPHP支持SWOOLE和传统(lamp,lmp)双部署方案,可以通过SWOOLE提供常驻内存的高性能php运行环境;
官网 https://rapphp.com/
文档 https://doc.magcloud.cc/
github https://github.com/tegzhiei/rapphp
主要特性:高性能:支持传统lamp(lmp)部署方案,同时支持rapphp+Swoole引擎部署方案;
IOC:真正的依赖注入,控制反转,开始更高级的设计思想,让你的代码更优雅,可控;
AOP:面向切面编程,代码低耦合;
MVC架构:简单好用的MVC架构,配置简单,程序可读性更高;
ORM:独特SQL构造方法,Record数据库模型,二级缓存机制,数据库操作更加简单,高效;
SWOOLE:不修改代码的情况下一键启用SWOOLE,PHP运行性能全面提升;
上手快:框架居然使用了一些比较高级的设计思想,但是再框架内使用都特别简单
支持异步任务,定时任务,websocket等高级功能
包含缓存,文件存储,日志等多钟常用功能;
有了IOC,AOP,SWOOLE神器,可以拉近和编译性语言(JAVA等)的性能;
名词解释下面是关于Sprig(JAVA框架)中的IOC和AOP的解释IOC https://www.zhihu.com/questio/23277575/aswer/169698662AOP https://www.zhihu.com/questio/24863332/aswer/48376158
IOC对象依赖注入,系统内对象绝对单例
class ToolCotroller{ /** * @var Coectio */ private $coectio; /** * @var TeatService */ private $teatService; public fuctio _iitialize(Coectio $coectio,TeatService $teatService){ $this->coectio=$coectio; $this->teatService=$teatService; }}AOP前置切面,后置切面,环绕切面,AOP支持完整可控
在UserLogic调用saveUser,delUser方法前调用UserLogicTestAop的testBefore方法 AopBuild::before(UserLogic::class) ->methods(["saveUser","delUser"]) ->wave(UserLogicTestAop::class) ->usig("testBefore") ->addPoit();//在UserLogic调用方法以save或del开头的方法前调用UserLogicTestAop的testAfter方法 AopBuild::after(UserLogic::class) ->methodsStart(["save","del"]) ->wave(UserLogicTestAop::class) ->usig("testAfter") ->addPoit();MVCMVC路径自动查找,参数自动绑定,返回(页面,jso)自动解析
class IdexCotroller { public fuctio idex($ame, Respose $respose) { $respose->assig('ame',$ame) retur 'idex'; } public fuctio jso($ame) { retur ['success'=>true,'data'=>$ame]; }}ORM数据模型,增删改查,二级缓存机制,数据库操作轻松搞定
$select = Good::select("g.*") -> order("rak desc");$select -> joi("good_tag gt",'gt.good_id=g.id') -> where("tag_id",$tag);$data = $select -> cache() -> page($page,$step);DB::ruITras(fuctio() { $user = User::getLock(1); $user -> ame = 'tegzhiei'; $user -> save(); });SWOOLE一键启动swoole服务器,异步任务,定时任务,websocket轻松搞定
'swoole_http'=>[ 'ip'=>'0.0.0.0', //正常不需要修改 'port'=>9501, //默认使用9501端口 'documet_root'=>ROOT_PATH, 'eable_static_hadler'=>false, //是否可以访问文件 正常不可以 'worker_um'=>20, //默认开启多少worker进程 'task_worker_um'=>4, //默认开启几个 task 进程 'task_max_request'=>0 //访问多少次释放worker进程 ],//启动服务 php idex.php http //异步任务Task::deliver(MyTaskService::class,'task',['key'=>100,'ame'=>'test']);//定时任务Timer::after('/test/a',['a'=>'1'],10,['tet-header'=>'test']);安利SWOOLE https://swoole.com/










评论