定制 kodeops/rro 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

kodeops/rro

Composer 安装命令:

composer require kodeops/rro

包简介

Rich response object plugin.

README 文档

README

 _     _  _____  ______  _______  _____   _____  _______
 |____/  |     | |     \ |______ |     | |_____] |______
 |    \_ |_____| |_____/ |______ |_____| |       ______|
 

rro | rich response object

Setup

Add composer package:

$ composer require kodeops/rro:dev-master

Copy function helpers to your project within your namespace (recommended, not mandatory):

https://raw.githubusercontent.com/kodeops/rro/master/src/helpers.php

Add rro-helpers.php to composer.json autoload section:

"autoload": {
    ...
        
   "files": [
       "vendor/kodeops/rro/src/helpers.php"
   ]
}

Usage

Assuming helper functions are loaded in composer.json:

$rro = error()
  ->type('error_type')
  ->message('This is a sample rich response object.')
  ->code(404)
  ->data(['foo' => 'bar']);

Checking status:

if ($rro->isError()) {
  // Response contains an error payload
}

if ($rro->isSuccess()) {
  // Response contains a success payload
}

Additionaly, isError and isSuccess accepts two parameters for checking type or message content:

if ($rro->isError('type', 'error_type')) {
  // Response contains an error type equals to "error_type"
}

if ($rro->isError('message', 'Error message')) {
  // Response contains an error message equals to "error_type"
}

if ($rro->isSuccess('type', 'success_type')) {
  // Response contains a success type equals to "success_type"
}

if ($rro-> isSuccess('message', 'Success message')) {
  // Response contains a message equals to "Success message"
}

Or you can access independent whether it's an error or response:

if ($rro->response('is_type', 'error_type')) {
  // returns true if given type matches response type
}

if ($rro->response('is_message', 'Descriptive error message')) {
  // returns true if given message matches response message
}

Accessing response:

$type = $rro->response('type');
$message = $rro->response('message');
$foo = $rro->response('data', 'foo');
$code = $rro->response('code');
$add = $rro->response('add', ['bar' => 'foo']);

Methods

Building response

type(string $string)

Set the type for the response.

message(string $string)

Set the message for the response.

data(array $data)

Set the data for the response.

code(int $code)

Set the status code for the response.

trans(string $translation)

Uses the translation to set the type and the translation itself is placed in the message.

A valid translation path must be entered, if not it will throw an rroException.

Check response status

isError()

Wether the response is an error.

isSuccess()

Wether the response is a success.

Accessing response details

response('type')

Get the response type.

response('message')

Get the response message.

response('data', $dot)

Get the response data array (uses dot syntax to retrieve specific key).

Example: response('data', 'user.id')

response('code')

Get the response code.

response('add', array $data)

Add more items to the data array (will be automatically merged to existing data).

response('is_type', $type)

Wether the response type equals to the parameter sent.

response('is_message', $message)

Wether the response message equals to the parameter sent.

Render response

HTML raw code toHtml()

Will output the message and type in HTML as follows:

<h1>{{ $message }}</h1>
<h3><code>{{ $type }}</code></h1>

So this snippet:

return success()
	->type('item_updated')
	->message('Item successfully updated!')
	->toHtml();

will produce:

<h1>Item successfully updated!</h1>
<h3><code>item_update</code></h3>

If type is not set, h3 tag will not be rendered.

Render to array toArray()

Render response to a simple array (otherwise responds with an instance of rro class).

So this snippet:

return success()
  ->type('item_updated')
  ->message('Item successfully updated!')
  ->toArray();

will produce:

[
  "response" => [
    "type" => "item_updated",
    "message" => "Item successfully updated!",
  ]
];

For Laravel response toResponse()

Render response in Laravel way.

kodeops/rro 适用场景与选型建议

kodeops/rro 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13.77k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2018 年 06 月 22 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「plugin」 「utils」 「laravel」 「kodeops」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 kodeops/rro 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 kodeops/rro 我们能提供哪些服务?
定制开发 / 二次开发

基于 kodeops/rro 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 13.77k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 23
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-06-22