## RapPHP 为速度而生的PHP 框架
#### RapPHP 是什么
* * * * *
一句话描述
RapPHP是支持 SWOOLE和传统(lamp,lnmp)双部署方案的Web框架;
github [https://github.com/tengzhinei/rapphp](https://github.com/tengzhinei/rapphp)
SWOOLE [https://swoole.com/](https://swoole.com/)
#### 主要特性:
* * * * *
1. 支持 SWOOLE和传统(lamp,lnmp)双部署方案;
2. 核心: IOC,AOP,MVC,SWOOLE;
3. 特色: RPC调用,连接池,redis 分布式锁;
4. 其他: 数据库(模型)操作,缓存,日志,验证器,文件存储,HTTP工具等
> 有了 IOC,AOP,SWOOLE神器,可以拉近和编译性语言(JAVA等)的性能;
### 名词解释
* * * * *
下面是关于 Spring(JAVA 框架) 中的 IOC和AOP 的解释
IOC https://www.zhihu.com/question/23277575/answer/169698662
AOP 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
~~~
推荐大家开始使用 docker 方式部署;
- 序言
- 开始
- 安装 RapPhp
- 应用目录
- 配置文件
- 入口类
- MVC架构
- 控制器基础
- 前置方法
- 拦截器
- 动态路由
- Request和Response
- Cookie和Session
- 模板引擎
- 请求缓存
- 流程图
- 数据库
- 基础使用
- 查询语法
- 查询操作
- where
- order
- limit
- lock
- fields
- join
- distinct
- having
- group
- force
- 查询方法
- 多数据源
- 数据库类型
- Record模型
- 使用Record
- 增删改
- 查找方法
- 数据类型
- 基本类型
- JSON 数据类型
- time
- date
- attach
- const
- 迭代操作
- record 更多方法
- 注入与转json
- 多级缓存
- 多数据源
- 模型生成
- 回调事件
- IOC控制反转
- Ioc基础概念
- 依赖注入
- Scope作用域
- 构造器
- 循环依赖
- AOP面向切面
- AOP使用
- 切面
- AopBuild
- 生成 aop 文件
- 事件勾子
- 执行循序
- Swoole
- Http服务器
- 用户进程
- Context上下文(重要)
- 协程
- 特色功能
- 限流器
- 连接池
- 数据库连接池
- Redis 连接池
- 通用连接池
- Rpc 远程调用
- Rpc服务提供方
- Rpc客户端
- 熔断器与服务降级
- Redis 分布式锁
- 其他功能
- 缓存
- redis
- 文件存储
- 存储简介
- 本地存储
- OSS存储
- 配置
- 日志
- 验证器
- FileUtil
- 数组Util
- Http工具
- 多语言
- 命令行
- 使用命令行
- 生成模型文件
- AOP动态文件生成
- swoole_http服务器
- 自定义命令行
- 异常与调试
- 异常抛出
- 异常处理
- 部署
- URL重写
- DOCKER 镜像(重要)
- 附录
- 回调事件
- 开发规范
- Swoole开发注意点
- 热点行更新排队机制