为效率而生的 PHP 框架 RapPHP

码农软件 · 软件分类 · Web框架 · 2019-03-24 10:28:36

软件介绍

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 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    
//异步任务
Task::deliver(MyTaskService::class,'task',['key'=>100,'name'=>'test']);
//定时任务
Timer::after('/test/a',['a'=>'1'],10,['tent-header'=>'test']);

安利

SWOOLE https://swoole.com/

本文地址:https://codercto.com/soft/d/2037.html

Designing for Emotion

Designing for Emotion

Aarron Walter / Happy Cog / 2011-10-18 / USD 18.00

Make your users fall in love with your site via the precepts packed into this brief, charming book by MailChimp user experience design lead Aarron Walter. From classic psychology to case studies, high......一起来看看 《Designing for Emotion》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具