• 序言
    • RapPHP 为速度而生的PHP 框架
      • RapPHP 是什么
      • 主要特性:
    • 名词解释
      • IOC
      • AOP
    • MVC
    • ORM
    • SWOOLE
    • 安利

    序言

    RapPHP 为速度而生的PHP 框架

    RapPHP 是什么


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

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

    在线交流群 QQ群:677411689(欢迎加入探讨)

    主要特性:


    • 高性能:支持传统lamp(lnmp)部署方案,同时支持rapphp+Swoole引擎部署方案;
    • IOC:真正的依赖注入,控制反转,开始更高级的设计思想,让你的代码更优雅,可控;
    • AOP:面向切面编程,代码低耦合;
    • MVC 架构:简单好用的 MVC 架构,配置简单,程序可读性更高;
    • ORM:独特SQL 构造方法,Record 数据库模型,二级缓存机制,数据库操作更加简单,高效;
    • SWOOLE:不修改代码的情况下一键启用 SWOOLE 开启异步编程之路;
    • 支持数据库连接池,redis 连接池,
    • 支持 Rpc 远程调用,为微服务而生
    • 上手快:框架居然使用了一些比较高级的设计思想,但是再框架内使用都特别简单
    • 支持异步任务,定时任务,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

    对象依赖注入,系统内对象绝对单例


    1. class ToolController{
    2. /**
    3. * @var Connection
    4. */
    5. private $connection;
    6. /**
    7. * @var TenantService
    8. */
    9. private $tenantService;
    10. public function _initialize(Connection $connection,TenantService $tenantService){
    11. $this->connection=$connection;
    12. $this->tenantService=$tenantService;
    13. }
    14. }

    AOP


    前置切面,后置切面,环绕切面, AOP 支持完整可控

    1. UserLogic调用saveUser,delUser方法前调用UserLogicTestAoptestBefore方法
    2. AopBuild::before(UserLogic::class)
    3. ->methods(["saveUser","delUser"])
    4. ->wave(UserLogicTestAop::class)
    5. ->using("testBefore")
    6. ->addPoint();
    7. //在UserLogic调用方法以save或del开头的方法前调用UserLogicTestAop的testAfter方法
    8. AopBuild::after(UserLogic::class)
    9. ->methodsStart(["save","del"])
    10. ->wave(UserLogicTestAop::class)
    11. ->using("testAfter")
    12. ->addPoint();

    MVC


    MVC 路径自动查找,参数自动绑定,返回(页面, json)自动解析

    1. class IndexController
    2. {
    3. public function index($name, Response $response)
    4. {
    5. $response->assign('name',$name)
    6. return 'index';
    7. }
    8. public function json($name)
    9. {
    10. return ['success'=>true,'data'=>$name];
    11. }
    12. }

    ORM


    数据模型,增删改查,二级缓存机制,数据库操作轻松搞定

    1. $select = Good::select("g.*") -> order("rank desc");
    2. $select -> join("good_tag gt",'gt.good_id=g.id') -> where("tag_id",$tag);
    3. $data = $select -> cache() -> page($page,$step);
    4. DB::runInTrans(function() {
    5. $user = User::getLock(1);
    6. $user -> name = 'tengzhinei';
    7. $user -> save();
    8. });

    SWOOLE


    一键启动 swoole 服务器,异步任务,定时任务,websocket 轻松搞定

    1. 'swoole_http'=>[
    2. 'ip'=>'0.0.0.0', //正常不需要修改
    3. 'port'=>9501, //默认使用9501端口
    4. 'document_root'=>ROOT_PATH,
    5. 'enable_static_handler'=>false, //是否可以访问文件 正常不可以
    6. 'worker_num'=>20, //默认开启多少worker进程
    7. 'task_worker_num'=>4, //默认开启几个 task 进程
    8. 'task_max_request'=>0 //访问多少次释放worker进程
    9. ],
    10. //启动服务
    11. php index.php http
    12. //异步任务
    13. Task::deliver(MyTaskService::class,'task',['key'=>100,'name'=>'test']);
    14. //定时任务
    15. Timer::after('/test/a',['a'=>'1'],10,['tent-header'=>'test']);

    安利


    SWOOLE https://swoole.com/

    DOCKER 推荐大家开始使用 docker 方式部署;

    如果自己搭建 docker 集群烦的话,建议大家使用阿里云的容器服务使用很简单https://www.aliyun.com/product/containerservice?spm=5176.224200.search.1.78956ed63TszRK

    序言 - 图1免费领取阿里云千元礼包

    下一篇:开始